diff --git a/data/web/api/index.css b/data/web/api/index.css index f2376fdaa..e35c0219e 100644 --- a/data/web/api/index.css +++ b/data/web/api/index.css @@ -14,3 +14,19 @@ body { margin: 0; background: #fafafa; } + +/* mailcow: inline code in descriptions in the text colour instead of bold purple */ +.swagger-ui .markdown code, +.swagger-ui .renderedMarkdown code { + color: inherit; + font-weight: normal; + font-size: 0.9em; + background: rgba(0, 0, 0, 0.04); + padding: 0 3px; +} + +html.dark-mode .swagger-ui .markdown code, +html.dark-mode .swagger-ui .renderedMarkdown code { + color: inherit; + background: rgba(255, 255, 255, 0.08); +} diff --git a/data/web/api/oauth2-redirect.html b/data/web/api/oauth2-redirect.html index 564091718..c4b7be174 100644 --- a/data/web/api/oauth2-redirect.html +++ b/data/web/api/oauth2-redirect.html @@ -1,79 +1,6 @@ - - Swagger UI: OAuth2 Redirect - - + diff --git a/data/web/api/oauth2-redirect.js b/data/web/api/oauth2-redirect.js new file mode 100644 index 000000000..af2f1342f --- /dev/null +++ b/data/web/api/oauth2-redirect.js @@ -0,0 +1 @@ +"use strict";function run(){var e,r,t,a=window.opener.swaggerUIRedirectOauth2,o=a.state,n=a.redirectUrl;if((t=(r=/code|token|error/.test(window.location.hash)?window.location.hash.substring(1).replace("?","&"):location.search.substring(1)).split("&")).forEach((function(e,r,t){t[r]='"'+e.replace("=",'":"')+'"'})),e=(r=r?JSON.parse("{"+t.join()+"}",(function(e,r){return""===e?r:decodeURIComponent(r)})):{}).state===o,"accessCode"!==a.auth.schema.get("flow")&&"authorizationCode"!==a.auth.schema.get("flow")&&"authorization_code"!==a.auth.schema.get("flow")||a.auth.code)a.callback({auth:a.auth,token:r,isValid:e,redirectUrl:n});else if(e||a.errCb({authId:a.auth.name,source:"auth",level:"warning",message:"Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"}),r.code)delete a.state,a.auth.code=r.code,a.callback({auth:a.auth,redirectUrl:n});else{let e;r.error&&(e="["+r.error+"]: "+(r.error_description?r.error_description+". ":"no accessCode received from the server. ")+(r.error_uri?"More info: "+r.error_uri:"")),a.errCb({authId:a.auth.name,source:"auth",level:"error",message:e||"[Authorization failed]: no accessCode received from the server"})}window.close()}"loading"!==document.readyState?run():document.addEventListener("DOMContentLoaded",(function(){run()})); \ No newline at end of file diff --git a/data/web/api/openapi.yaml b/data/web/api/openapi.yaml index b08747722..7daa49d41 100644 --- a/data/web/api/openapi.yaml +++ b/data/web/api/openapi.yaml @@ -1,23 +1,33 @@ openapi: 3.1.0 info: description: >- - mailcow is complete e-mailing solution with advanced antispam, antivirus, - nice UI and API. + The API of mailcow, the mail server suite with antispam, antivirus and a + web UI. - In order to use this API you have to create a API key and add your IP - address to the whitelist of allowed IPs this can be done by logging into the - Mailcow UI using your admin account, then go to Configuration > Access > - Edit administrator details > API. There you will find a collapsed API menu. + **API keys**: create them in the mailcow UI under System > Configuration > + Access > Administrators, card API. A key works from its allowed IP + addresses (or from anywhere if the IP check is skipped). Read-only keys + may use the `get` routes only. Keys set in mailcow.conf (`API_KEY`, + `API_KEY_READ_ONLY`, `API_ALLOW_FROM`) are shown in the UI but can only be + changed in mailcow.conf. A key acts as an administrator. - There are two types of API keys - - The read only key can only be used for all get endpoints - - The read write key can be used for all endpoints + **Requests**: `get` routes use GET, all others POST with + `Content-Type: application/json`. - You can create as many keys of both types as you need. Service keys - defined in mailcow.conf (API_KEY, API_KEY_READ_ONLY, API_ALLOW_FROM) are - shown in the UI, but can only be changed in mailcow.conf. + - add: the new object as body + - edit: `{"items": [...], "attr": {...}}`, `items` are the objects to + change, `attr` the values to set + - delete: the list of objects to delete + + + **Answers**: write routes return the list of messages of the call + (`type`, `msg`), or `{"type": "success", "msg": "Task completed"}` / + `{"type": "error", "msg": "Cannot add item"}` if there are none. The + status is 200 for failures too, so check `type`. Read routes return the + object or list, `{}` or `[]` if there is nothing. Unknown routes answer + 404, invalid JSON 400, a wrong method 405. title: mailcow API version: "1.0.0" @@ -31,23 +41,3986 @@ components: type: apiKey in: header name: X-API-Key + schemas: + Message: + type: object + description: >- + One message of a write call, as the mailcow UI shows it. `msg` is a key + of the mailcow language files, alone or as a list with the values of its + placeholders. + properties: + type: + type: string + enum: + - success + - danger + - warning + - info + log: + type: array + description: >- + The call that produced the message (function, action, object, + data), secrets replaced by `*` + items: {} + msg: + oneOf: + - type: string + - type: array + items: {} + required: + - type + - msg + Messages: + type: array + items: + $ref: "#/components/schemas/Message" + TaskResult: + type: object + description: Answer of a write call that produced no message + properties: + type: + type: string + enum: + - success + - error + msg: + type: string + examples: + - Task completed + - Cannot add item + required: + - type + - msg + Error: + type: object + properties: + type: + type: string + const: error + msg: + type: string + required: + - type + - msg + Domain: + type: object + description: >- + A domain. Quotas and sizes are in bytes; the `*_int` fields repeat the + value before them. + properties: + domain_name: + type: string + description: Domain name (IDN as punycode) + domain_h_name: + type: string + description: Domain name in Unicode + description: + type: string + description: Description + max_new_mailbox_quota: + type: integer + description: >- + Largest quota a new mailbox can get: the free domain quota, at most + the max. mailbox quota + def_new_mailbox_quota: + type: integer + description: Quota a new mailbox gets by default + quota_used_in_domain: + type: [string, integer] + description: Sum of the quotas of the mailboxes + bytes_total: + type: [string, integer] + description: Storage used by the mailboxes + msgs_total: + type: [string, integer] + description: Number of messages in the mailboxes + mboxes_in_domain: + type: integer + description: Number of mailboxes + mboxes_left: + type: integer + description: Mailboxes that can still be added + max_num_aliases_for_domain: + type: integer + description: Max. number of aliases + max_num_mboxes_for_domain: + type: integer + description: Max. number of mailboxes + def_quota_for_mbox: + type: integer + description: Default quota of new mailboxes + max_quota_for_mbox: + type: integer + description: Max. quota per mailbox + max_quota_for_domain: + type: integer + description: Quota of the whole domain + relayhost: + type: [string, integer] + description: ID of the sender-dependent transport, "0" = none + backupmx: + type: integer + enum: [0, 1] + description: Relay domain (backup MX) + backupmx_int: + type: integer + enum: [0, 1] + gal: + type: integer + enum: [0, 1] + description: Global address list in SOGo + gal_int: + type: integer + enum: [0, 1] + rl: + description: Rate limit, `false` if none + oneOf: + - $ref: "#/components/schemas/DomainRatelimit" + - type: boolean + const: false + active: + type: integer + enum: [0, 1] + description: Domain active + active_int: + type: integer + enum: [0, 1] + relay_all_recipients: + type: integer + enum: [0, 1] + description: Relay all recipients + relay_all_recipients_int: + type: integer + enum: [0, 1] + relay_unknown_only: + type: integer + enum: [0, 1] + description: Relay non-existing mailboxes only + relay_unknown_only_int: + type: integer + enum: [0, 1] + created: + type: string + description: Creation time (`YYYY-MM-DD hh:mm:ss`) + modified: + type: [string, "null"] + description: Time of the last change + aliases_in_domain: + type: [integer, string] + description: Number of aliases, including those of its alias domains + aliases_left: + type: integer + description: Aliases that can still be added + domain_admins: + type: string + description: Comma-separated domain admins, `-` if none; admins only + tags: + type: array + items: + type: string + description: Tags; missing when the domain has none + DomainRatelimit: + type: object + description: Rate limit of a domain or alias domain + properties: + value: + type: string + description: Messages per time frame + frame: + type: string + enum: [s, m, h, d] + description: Time frame (second, minute, hour, day) + DomainTemplate: + type: object + properties: + id: + type: integer + description: Template ID + template: + type: string + description: Template name + type: + type: string + const: domain + attributes: + $ref: "#/components/schemas/DomainTemplateAttributes" + created: + type: string + description: Creation time + modified: + type: [string, "null"] + description: Time of the last change + DomainTemplateAttributes: + type: object + description: Values of a domain template as stored; quotas in bytes + properties: + tags: + type: array + items: + type: string + max_num_aliases_for_domain: + type: integer + max_num_mboxes_for_domain: + type: integer + def_quota_for_mbox: + type: integer + max_quota_for_mbox: + type: integer + max_quota_for_domain: + type: integer + rl_frame: + type: string + enum: [s, m, h, d] + rl_value: + type: [string, integer] + description: Rate limit, "" = none + active: + type: integer + enum: [0, 1] + gal: + type: integer + enum: [0, 1] + backupmx: + type: integer + enum: [0, 1] + relay_all_recipients: + type: integer + enum: [0, 1] + relay_unknown_only: + type: integer + enum: [0, 1] + dkim_selector: + type: string + key_size: + type: integer + DomainTemplateInput: + type: object + description: >- + Values of a domain template, quotas in MiB. The defaults apply when a + template is added; for edit/domain/template see there. + properties: + template: + type: string + description: Template name, unique + tags: + type: array + items: + type: string + default: [] + description: Tags of new domains + max_num_aliases_for_domain: + type: [integer, string] + default: 400 + description: Max. number of aliases + max_num_mboxes_for_domain: + type: [integer, string] + default: 10 + description: Max. number of mailboxes + def_quota_for_mbox: + type: [integer, string] + default: 3072 + description: Default quota of new mailboxes in MiB + max_quota_for_mbox: + type: [integer, string] + default: 10240 + description: Max. quota per mailbox in MiB + max_quota_for_domain: + type: [integer, string] + default: 10240 + description: Quota of the whole domain in MiB + rl_value: + type: [integer, string] + default: "" + description: Rate limit, messages per `rl_frame`; empty = none + rl_frame: + type: string + enum: [s, m, h, d] + default: s + description: Rate limit time frame + active: + type: [integer, string] + enum: [0, 1, "0", "1"] + default: 1 + gal: + type: [integer, string] + enum: [0, 1, "0", "1"] + default: 1 + description: Global address list in SOGo + backupmx: + type: [integer, string] + enum: [0, 1, "0", "1"] + default: 0 + description: Relay domain (backup MX) + relay_all_recipients: + type: [integer, string] + enum: [0, 1, "0", "1"] + default: 0 + relay_unknown_only: + type: [integer, string] + enum: [0, 1, "0", "1"] + default: 0 + dkim_selector: + type: string + default: dkim + description: Selector of the DKIM key of new domains + key_size: + type: [integer, string] + default: 2048 + description: DKIM key size in bits of new domains + AliasDomain: + type: object + properties: + alias_domain: + type: string + description: Alias domain name + target_domain: + type: string + description: Domain the alias domain points to + parent_is_backupmx: + type: integer + enum: [0, 1] + description: The target domain is a relay domain + active: + type: integer + enum: [0, 1] + description: Alias domain active + active_int: + type: integer + enum: [0, 1] + rl: + description: Rate limit, `false` if none + oneOf: + - $ref: "#/components/schemas/DomainRatelimit" + - type: boolean + const: false + created: + type: string + description: Creation time + modified: + type: [string, "null"] + description: Time of the last change + DomainPolicyEntry: + type: object + properties: + object: + type: string + description: The domain or mailbox the entry belongs to + value: + type: string + description: Sender address or pattern + prefid: + type: integer + description: Entry ID (for delete/domain-policy) + DkimKey: + type: object + properties: + pubkey: + type: string + description: Public key (base64, without PEM lines) + length: + type: string + enum: ["1024", "2048", "3072", "4096", ">= 8192"] + description: Key size in bits, estimated from the public key + dkim_txt: + type: string + description: >- + Content of the DNS TXT record; split into quoted strings of 255 + characters when `SPLIT_DKIM_255` is enabled + dkim_selector: + type: string + description: Selector + privkey: + type: string + description: >- + Private key in PEM format, base64-encoded, when + `SHOW_DKIM_PRIV_KEYS` is enabled, else empty + DomainSearchRequest: + type: object + description: >- + Server-side processing parameters of DataTables + (https://datatables.net/manual/server-side). Without `start` and + `length` all matching domains are answered. + properties: + draw: + type: integer + description: Request counter, answered as it is + start: + type: integer + description: Offset of the first domain + length: + type: integer + description: Number of domains, -1 = all + search: + type: object + properties: + value: + type: string + description: Searched in all columns with `searchable` true + order: + type: array + items: + type: object + properties: + column: + type: integer + description: Position in `columns` (see the description of the route) + dir: + type: string + enum: [asc, desc] + columns: + type: array + description: >- + The columns of the table; the position gives the database column + (see the description of the route) + items: + type: object + properties: + data: + type: [string, integer] + description: >- + Column name of the UI; a column position makes + `search.value` of this entry filter that column + searchable: + type: [boolean, string] + description: Column takes part in the global search; must be set + orderable: + type: [boolean, string] + description: Column may be sorted by; must be set + search: + type: object + properties: + value: + type: string + description: Filter of this column + DomainSearchResult: + type: object + properties: + draw: + type: integer + description: "`draw` of the request" + recordsTotal: + type: integer + description: Number of domains the caller can see + recordsFiltered: + type: integer + description: Number of domains that match the search + data: + type: array + description: The domains of the page + items: + $ref: "#/components/schemas/Domain" + MailboxItems: + description: One mailbox address or a list of them + oneOf: + - type: string + - type: array + items: + type: string + UserAclName: + type: string + description: "A user ACL: something the mailbox user may do in the UI" + enum: + - spam_alias + - tls_policy + - spam_score + - spam_policy + - delimiter_action + - syncjobs + - eas_reset + - sogo_profile_reset + - pushover + - quarantine + - quarantine_attachments + - quarantine_notification + - quarantine_category + - app_passwds + - pw_reset + ProtocolAccessName: + type: string + enum: + - imap + - pop3 + - smtp + - sieve + - eas + - dav + MailboxAttributes: + type: object + description: Settings of a mailbox; flags are "0" or "1" + properties: + force_pw_update: + type: [string, integer] + description: The user must change the password at the next login + force_tfa: + type: [string, integer] + description: The user must set up two-factor authentication at the next login + tls_enforce_in: + type: [string, integer] + tls_enforce_out: + type: [string, integer] + sogo_access: + type: [string, integer] + description: Login to SOGo from the UI + imap_access: + type: [string, integer] + pop3_access: + type: [string, integer] + smtp_access: + type: [string, integer] + sieve_access: + type: [string, integer] + eas_access: + type: [string, integer] + dav_access: + type: [string, integer] + relayhost: + type: [string, integer] + description: ID of the sender-dependent transport, "0" for none + shared: + type: [string, integer] + description: Shared mailbox without a login of its own + passwd_update: + type: [string, integer] + description: Time of the last password change + mailbox_format: + type: string + quarantine_notification: + type: string + enum: + - never + - hourly + - daily + - weekly + quarantine_category: + type: string + enum: + - reject + - add_header + - all + attribute_hash: + type: string + description: Hash of the template the settings came from, cleared by manual changes + recovery_email: + type: string + description: Address for password reset mails (present after it was set) + template: + type: string + description: Name of the template the mailbox was created from (if any) + Mailbox: + type: object + description: >- + A mailbox. The reduced form lacks `max_new_quota`, `spam_aliases`, + `pushover_active`, `rl`, `rl_scope`, `is_relayed` and `sender_acl`; + `tags` is missing without tags. + properties: + username: + type: string + description: Address of the mailbox + active: + type: integer + description: 1 active, 0 inactive, 2 login disabled (mail is still accepted) + active_int: + type: integer + description: Same as `active` + domain: + type: string + name: + type: string + description: Full name + local_part: + type: string + quota: + type: integer + description: Quota in bytes, 0 = unlimited + messages: + type: integer + description: Number of messages + attributes: + $ref: "#/components/schemas/MailboxAttributes" + custom_attributes: + type: [object, array] + description: Custom attributes (an empty list when there are none) + additionalProperties: + type: string + quota_used: + type: integer + description: Used bytes + percent_in_use: + type: [integer, string] + description: Used part of the quota in percent, "- " for unlimited quota + created: + type: string + modified: + type: [string, "null"] + authsource: + type: string + enum: + - mailcow + - keycloak + - generic-oidc + - ldap + percent_class: + type: string + enum: + - info + - success + - warning + - danger + description: info (unlimited), success, warning (≥ 75 %), danger (≥ 90 %) + last_imap_login: + type: integer + description: Unix time of the last IMAP login, 0 = none + last_smtp_login: + type: integer + last_pop3_login: + type: integer + last_sso_login: + type: integer + last_sogo_login: + type: integer + max_new_quota: + type: integer + description: Largest quota in bytes the mailbox may get (domain limits) + spam_aliases: + type: integer + description: Number of valid time-limited aliases + pushover_active: + type: integer + enum: [0, 1] + rl: + description: Effective rate limit, `false` if there is none + oneOf: + - $ref: "#/components/schemas/MailboxRatelimit" + - type: boolean + const: false + rl_scope: + type: string + enum: + - mailbox + - domain + description: Whether `rl` is the mailbox's own limit or the domain limit + is_relayed: + type: integer + description: 1 if the domain is relayed (backup MX) + sender_acl: + type: array + description: Internal addresses and @domains the mailbox may send as + items: + type: string + tags: + type: array + items: + type: string + MailboxAdd: + type: object + required: + - local_part + - domain + properties: + local_part: + type: string + description: Part before the @ + domain: + type: string + description: Domain of the mailbox + name: + type: string + description: Full name (`<` and `>` at the ends are removed) + authsource: + type: string + enum: + - mailcow + - keycloak + - generic-oidc + - ldap + default: mailcow + description: Login source; an external one only if it is the configured identity provider, else mailcow + password: + type: string + format: password + description: Checked against the password policy; empty (with `password2`) for a shared mailbox + password2: + type: string + format: password + description: The password again + template: + type: [integer, string] + description: ID of the mailbox template for the defaults (default the first) + quota: + type: [integer, string] + description: Quota in MiB, 0 = unlimited + active: + type: [integer, string] + enum: [0, 1, 2, "0", "1", "2"] + description: 1 active, 0 inactive, 2 login disabled (mail is accepted) + tags: + type: array + items: + type: string + description: Tags (the first 26 are saved) + protocol_access: + type: array + description: Allowed protocols; when sent it replaces the single `*_access` fields + items: + $ref: "#/components/schemas/ProtocolAccessName" + imap_access: + type: [integer, string] + enum: [0, 1, "0", "1"] + pop3_access: + type: [integer, string] + enum: [0, 1, "0", "1"] + smtp_access: + type: [integer, string] + enum: [0, 1, "0", "1"] + sieve_access: + type: [integer, string] + enum: [0, 1, "0", "1"] + eas_access: + type: [integer, string] + enum: [0, 1, "0", "1"] + dav_access: + type: [integer, string] + enum: [0, 1, "0", "1"] + sogo_access: + type: [integer, string] + enum: [0, 1, "0", "1"] + description: Login to SOGo from the UI + force_pw_update: + type: [integer, string] + enum: [0, 1, "0", "1"] + description: Password change at the first login (always 0 for external sources) + force_tfa: + type: [integer, string] + enum: [0, 1, "0", "1"] + description: Two-factor setup at the first login (always 0 for generic-oidc) + tls_enforce_in: + type: [integer, string] + enum: [0, 1, "0", "1"] + tls_enforce_out: + type: [integer, string] + enum: [0, 1, "0", "1"] + relayhost: + type: [integer, string] + default: 0 + description: ID of a sender-dependent transport, 0 = none + shared: + type: [integer, string] + enum: [0, 1, "0", "1"] + default: 0 + description: Shared mailbox without a login of its own, opened by group members + quarantine_notification: + type: string + enum: + - never + - hourly + - daily + - weekly + quarantine_category: + type: string + enum: + - reject + - add_header + - all + tagged_mail_handler: + type: string + enum: + - subfolder + - subject + - none + description: Handling of mail to address+tag, see `edit/delimiter_action` + acl: + type: array + description: User ACLs to grant; when sent, all others are off + items: + $ref: "#/components/schemas/UserAclName" + rl_value: + type: [integer, string] + description: Rate limit, messages per `rl_frame` (0 or empty = none) + rl_frame: + type: string + enum: + - s + - m + - h + - d + attribute_hash: + type: string + description: Internal, the hash of the template the values come from + MailboxEdit: + type: object + properties: + active: + type: [integer, string] + enum: [0, 1, 2, "0", "1", "2"] + description: 1 active, 0 inactive, 2 login disabled (mail is accepted) + name: + type: string + description: Full name; empty keeps the current name + quota: + type: [integer, string] + description: Quota in MiB, 0 = unlimited; empty keeps the current quota + password: + type: string + format: password + description: New password (authsource mailcow), checked against the password policy + password2: + type: string + format: password + authsource: + type: string + enum: + - mailcow + - keycloak + - generic-oidc + - ldap + description: An external source only if it is the configured identity provider + pw_recovery_email: + type: string + description: Address for password reset mails (authsource mailcow only) + force_pw_update: + type: [integer, string] + enum: [0, 1, "0", "1"] + force_tfa: + type: [integer, string] + enum: [0, 1, "0", "1"] + sogo_access: + type: [integer, string] + enum: [0, 1, "0", "1"] + protocol_access: + type: array + description: Allowed protocols; when sent it replaces the single `*_access` fields + items: + $ref: "#/components/schemas/ProtocolAccessName" + imap_access: + type: [integer, string] + enum: [0, 1, "0", "1"] + pop3_access: + type: [integer, string] + enum: [0, 1, "0", "1"] + smtp_access: + type: [integer, string] + enum: [0, 1, "0", "1"] + sieve_access: + type: [integer, string] + enum: [0, 1, "0", "1"] + eas_access: + type: [integer, string] + enum: [0, 1, "0", "1"] + dav_access: + type: [integer, string] + enum: [0, 1, "0", "1"] + relayhost: + type: [integer, string] + description: ID of a sender-dependent transport, 0 = none + shared: + type: [integer, string] + enum: [0, 1, "0", "1"] + tags: + type: array + items: + type: string + description: Tags to add; existing tags stay (remove with `delete/mailbox/tag/{mailbox}`) + tagged_mail_handler: + type: string + enum: + - subfolder + - subject + - none + sender_acl: + description: >- + Replaces the internal addresses and @domains the mailbox may send + as; `*` (admins only) allows all, `["default"]` removes all + oneOf: + - type: string + - type: array + items: + type: string + extended_sender_acl: + type: string + description: Replaces the external sender addresses or domains, separated by space, comma or semicolon + attribute_hash: + type: string + description: Internal; cleared when not sent + MailboxTemplateInput: + type: object + properties: + quota: + type: [integer, string] + default: 0 + description: Quota in MiB, 0 = unlimited + tags: + type: array + items: + type: string + tagged_mail_handler: + type: string + enum: + - subfolder + - subject + - none + default: none + quarantine_notification: + type: string + enum: + - never + - hourly + - daily + - weekly + default: hourly + quarantine_category: + type: string + enum: + - reject + - add_header + - all + default: reject + rl_value: + type: [integer, string] + description: Rate limit, messages per `rl_frame` + rl_frame: + type: string + enum: + - s + - m + - h + - d + default: s + force_pw_update: + type: [integer, string] + enum: [0, 1, "0", "1"] + force_tfa: + type: [integer, string] + enum: [0, 1, "0", "1"] + sogo_access: + type: [integer, string] + enum: [0, 1, "0", "1"] + active: + type: [integer, string] + enum: [0, 1, 2, "0", "1", "2"] + default: 1 + tls_enforce_in: + type: [integer, string] + enum: [0, 1, "0", "1"] + tls_enforce_out: + type: [integer, string] + enum: [0, 1, "0", "1"] + protocol_access: + type: array + items: + $ref: "#/components/schemas/ProtocolAccessName" + description: Allowed protocols (default all) + acl: + type: array + items: + $ref: "#/components/schemas/UserAclName" + description: User ACLs granted to new mailboxes + MailboxTemplate: + type: object + properties: + id: + type: integer + template: + type: string + description: Name + type: + type: string + const: mailbox + attributes: + type: object + description: The settings as in the example; quota in bytes, one `acl_` flag per user ACL + additionalProperties: true + created: + type: string + modified: + type: [string, "null"] + Resource: + type: object + properties: + name: + type: string + description: Address of the resource + kind: + type: string + enum: + - location + - group + - thing + multiple_bookings: + type: integer + description: 0 always free, -1 unlimited but busy when booked, n ≥ 1 at most n bookings + description: + type: string + active: + type: integer + active_int: + type: integer + domain: + type: string + local_part: + type: string + AppPassword: + type: object + properties: + id: + type: integer + name: + type: string + mailbox: + type: string + domain: + type: string + password: + type: string + description: Hash of the app password + created: + type: string + modified: + type: [string, "null"] + imap_access: + type: integer + smtp_access: + type: integer + dav_access: + type: integer + eas_access: + type: integer + pop3_access: + type: integer + sieve_access: + type: integer + active: + type: integer + SieveFilter: + type: object + properties: + active: + type: integer + enum: [0, 1] + id: + type: integer + username: + type: string + description: Mailbox + filter_type: + type: string + enum: + - prefilter + - postfilter + script_data: + type: string + description: The Sieve script + script_desc: + type: string + TimeLimitedAlias: + type: object + properties: + address: + type: string + goto: + type: string + description: Mailbox the alias delivers to + description: + type: string + validity: + type: integer + description: Unix time of expiry (0 when made permanent by an edit) + created: + type: string + modified: + type: [string, "null"] + permanent: + type: integer + enum: [0, 1] + SpamPolicyEntry: + type: object + properties: + object: + type: string + description: Mailbox or domain the entry belongs to + value: + type: string + description: Sender address, domain or pattern + prefid: + type: integer + description: ID for `delete/mailbox-policy` + MailboxRatelimit: + type: object + properties: + value: + type: string + description: Number of messages + frame: + type: string + enum: + - s + - m + - h + - d + description: Per second, minute, hour or day + SpamScore: + type: object + properties: + score: + type: string + description: '"low,high": junk folder from low, rejected from high' + LastLogin: + type: object + properties: + ui: + description: Previous successful UI login, `false` if there is none, `[]` for domain admins + oneOf: + - type: object + properties: + remote: + type: string + description: IP address + time: + type: integer + description: Unix time + - type: boolean + const: false + - type: array + maxItems: 0 + sasl: + type: array + items: + type: object + properties: + real_rip: + type: string + description: Client IP; private and internal addresses as "Web/EAS/Internal (address)" + datetime: + type: string + service: + type: string + description: e.g. imap, smtp, pop3, SOGO, SSO, MAILCOWUI + app_password: + type: integer + description: ID of the app password used, 0 = none + app_password_name: + type: [string, "null"] + location: + type: string + description: Country code of public addresses (if known) + MailboxSearchRequest: + type: object + description: DataTables server-side request + properties: + draw: + type: integer + description: Counter, returned unchanged + start: + type: integer + description: Offset of the first row; without it all rows are returned + length: + type: integer + description: Rows per page, -1 = all + search: + type: object + properties: + value: + type: string + description: Searched in all searchable columns (substring) + order: + type: array + items: + type: object + properties: + column: + type: integer + description: Column number (index in `columns`) + dir: + type: string + enum: + - asc + - desc + columns: + type: array + description: Column n of the table is `columns[n]`; needed to search or sort + items: + type: object + properties: + data: + type: [string, integer] + description: >- + Name of the column in the UI; for this column's + `search.value` only a column number works, other values + filter the address + searchable: + type: [boolean, string] + description: true or "true" includes the column in the search + orderable: + type: [boolean, string] + description: true or "true" allows sorting by the column + search: + type: object + properties: + value: + type: string + description: Filter for this column only (substring) + MailboxSearchResult: + type: object + properties: + draw: + type: integer + recordsTotal: + type: integer + recordsFiltered: + type: integer + data: + type: array + items: + $ref: "#/components/schemas/Mailbox" + Alias: + type: object + properties: + in_primary_domain: + type: string + description: Target domain if `domain` is an alias domain, else empty + id: + type: integer + domain: + type: string + description: Domain of the address, a domain or alias domain + public_comment: + type: [string, "null"] + description: Comment shown to the users + private_comment: + type: [string, "null"] + description: Comment for administrators + goto: + type: string + description: >- + Comma-separated destination addresses, or `null@localhost` + (discard), `spam@localhost` (learn as spam), `ham@localhost` (learn + as ham) + address: + type: string + description: Alias address, `@example.org` for a catch-all + is_catch_all: + type: integer + description: 1 = catch-all of the domain + internal: + type: integer + description: 1 = only reachable from its own domain and its alias domains + active: + type: integer + description: 1 = active, 0 = inactive + active_int: + type: integer + description: Same as `active` + sogo_visible: + type: integer + description: 1 = selectable sender in SOGo + sogo_visible_int: + type: integer + description: Same as `sogo_visible` + sender_allowed: + type: integer + description: 1 = the destination mailboxes may send as this alias + group_id: + type: [integer, "null"] + description: >- + Mailbox group whose distribution address this is; such aliases can + only be changed in the group + group_name: + type: [string, "null"] + description: Name of that mailbox group + created: + type: string + description: Creation time, `YYYY-MM-DD hh:mm:ss` + modified: + type: [string, "null"] + description: Time of the last change + BccMap: + type: object + properties: + id: + type: integer + local_dest: + type: string + description: Domain as `@example.org` or the address of a mailbox or alias + bcc_dest: + type: string + description: Address that gets the copies + active: + type: integer + description: 1 = active, 0 = inactive + type: + type: string + enum: + - sender + - rcpt + description: "`sender`: mail sent by `local_dest`; `rcpt`: mail sent to it" + created: + type: string + domain: + type: string + description: Domain of `local_dest` + modified: + type: [string, "null"] + RecipientMap: + type: object + properties: + id: + type: integer + recipient_map_old: + type: string + description: Original recipient, an address or `@domain` + recipient_map_new: + type: string + description: New recipient, an address or `@domain` + active: + type: integer + description: 1 = active, 0 = inactive + created: + type: string + modified: + type: [string, "null"] + TlsPolicyMap: + type: object + properties: + id: + type: integer + dest: + type: string + description: Destination + policy: + type: string + enum: + - none + - may + - encrypt + - dane + - dane-only + - fingerprint + - verify + - secure + parameters: + type: [string, "null"] + description: Space-separated `name=value` attributes, may be empty + active: + type: integer + description: 1 = active, 0 = inactive + created: + type: string + modified: + type: [string, "null"] + Relayhost: + type: object + description: A sender-dependent transport + properties: + id: + type: integer + description: The value domains and mailboxes use as `relayhost` + hostname: + type: string + description: Next hop + username: + type: string + description: SMTP user name, empty without authentication + password: + type: string + description: SMTP password in clear text + active: + type: integer + description: 1 = active, 0 = inactive + password_short: + type: string + description: First three characters of the password and `...` + used_by_domains: + type: string + description: Comma-separated domains that use the transport, may be empty + used_by_mailboxes: + type: string + description: Comma-separated mailboxes that use the transport, may be empty + Transport: + type: object + description: A transport map entry + properties: + id: + type: integer + is_mx_based: + type: integer + description: 1 = `destination` is a regular expression for MX names + destination: + type: string + nexthop: + type: string + username: + type: string + description: SMTP user name, empty without authentication + password: + type: string + description: SMTP password in clear text + active: + type: integer + description: 1 = active, 0 = inactive + password_short: + type: string + description: First three characters of the password and `...` + ForwardingHost: + type: object + properties: + host: + type: string + description: IP address or network + source: + type: string + description: What was added (host name, domain or the address itself) + keep_spam: + type: string + enum: + - "yes" + - "no" + description: "`yes` = the mail of the host is not scanned for spam" + RspamdSettingAttributes: + type: object + properties: + desc: + type: string + description: Short description + content: + type: string + description: Rule content in Rspamd settings syntax + active: + type: [boolean, integer, string] + description: 1 = the rule is handed to Rspamd + default: 0 + required: + - desc + - content + RspamdSetting: + type: object + properties: + id: + type: integer + desc: + type: string + description: Short description + content: + type: string + description: Rule content in Rspamd settings syntax + active: + type: integer + enum: + - 0 + - 1 + RspamdRegexMap: + type: string + description: File name of a global Rspamd regex map + enum: + - global_mime_from_blacklist.map + - global_mime_from_whitelist.map + - global_smtp_from_blacklist.map + - global_smtp_from_whitelist.map + - global_rcpt_blacklist.map + - global_rcpt_whitelist.map + - fishy_tlds.map + - bad_words.map + - bad_words_de.map + - bad_languages.map + - bulk_header.map + - bad_header.map + - monitoring_nolog.map + Preset: + type: object + properties: + name: + type: string + description: File name of the preset without `.yml` + headline: + type: string + description: Title, translated + content: + type: string + description: Rspamd settings rule or Sieve script + GlobalFilters: + type: object + properties: + prefilter: + type: string + description: Sieve script that runs before the filters of the mailboxes + postfilter: + type: string + description: Sieve script that runs after the filters of the mailboxes + MailQueueItem: + type: object + description: One message of `postqueue -j` + properties: + queue_name: + type: string + description: Queue, e.g. `active`, `deferred`, `hold`, `incoming` + queue_id: + type: string + arrival_time: + type: integer + description: Unix time + message_size: + type: integer + description: Size in bytes + forced_expire: + type: boolean + sender: + type: string + recipients: + type: array + description: Recipient addresses, with the reason of the delay in brackets if there is one + items: + type: string + QuarantineItem: + type: object + properties: + id: + type: integer + qid: + type: string + description: Postfix queue ID of the message + subject: + type: string + virus_flag: + type: integer + description: Greater than 0 when Rspamd found a virus (`VIRUS_FOUND`) + score: + type: number + description: Rspamd score + rcpt: + type: string + description: Mailbox the item belongs to + sender: + type: string + action: + type: string + description: Rspamd action, e.g. `reject` or `add header` + created: + type: integer + description: Unix time + notified: + type: integer + description: 1 when the recipient got a notification + QuarantineItemDetails: + type: object + properties: + id: + type: integer + qid: + type: string + description: Postfix queue ID of the message + subject: + type: string + score: + type: number + description: Rspamd score + ip: + type: string + description: IP of the sending server + action: + type: string + description: Rspamd action + symbols: + type: string + description: Rspamd symbols as JSON text + fuzzy_hashes: + type: string + description: Fuzzy hashes as JSON text + sender: + type: string + rcpt: + type: string + description: Mailbox the item belongs to + msg: + type: string + description: The raw message + domain: + type: [string, "null"] + notified: + type: integer + description: 1 when the recipient got a notification + created: + type: string + description: Time of quarantining (`YYYY-MM-DD HH:MM:SS`) + user: + type: string + description: Authenticated sender, `unknown` if none + qhash: + type: string + description: Secret of the release and delete links in the notification mails + Fail2Ban: + type: object + properties: + ban_time: + type: integer + description: Ban time in seconds + ban_time_increment: + type: boolean + description: The ban time grows with every ban of a network + max_ban_time: + type: integer + description: Maximum ban time in seconds + netban_ipv4: + type: integer + description: IPv4 prefix length that is banned + netban_ipv6: + type: integer + description: IPv6 prefix length that is banned + max_attempts: + type: integer + description: Failed logins within `retry_window` that lead to a ban + retry_window: + type: integer + description: Window in seconds for `max_attempts` + banlist_id: + type: string + description: ID of the banlist URL `/f2b-banlist?id=` + manage_external: + type: integer + description: 1 = netfilter sets no rules, the banlist is for an external firewall + regex: + type: object + description: Regex filters by number + additionalProperties: + type: string + whitelist: + type: string + description: Allowlisted networks and hosts, one per line + blacklist: + type: string + description: Denylisted networks, one per line + perm_bans: + type: array + description: Permanent bans (only present when there are any) + items: + type: object + properties: + network: + type: string + ip: + type: string + active_bans: + type: array + description: Active bans (only present when there are any) + items: + type: object + properties: + queued_for_unban: + type: integer + description: 1 when the ban is about to be lifted + network: + type: string + ip: + type: string + banned_until: + type: string + description: Remaining ban time, e.g. `00h 27m 08s` + Admin: + type: object + description: An administrator account + properties: + username: + type: string + tfa_active: + type: integer + enum: [0, 1] + description: 1 = two-factor authentication is active + tfa_active_int: + type: integer + enum: [0, 1] + description: Same as `tfa_active` + active: + type: integer + enum: [0, 1] + description: 1 = the account can log in + active_int: + type: integer + enum: [0, 1] + description: Same as `active` + created: + type: string + description: Creation time (`YYYY-MM-DD hh:mm:ss`) + attributes: + type: object + properties: + force_tfa: + type: string + enum: ["0", "1"] + description: "\"1\" = two-factor authentication must be set up at the next login" + force_pw_update: + type: string + enum: ["0", "1"] + description: "\"1\" = the password must be changed at the next login" + DomainAdmin: + type: object + description: A domain administrator account + properties: + username: + type: string + tfa_active: + type: integer + enum: [0, 1] + description: 1 = two-factor authentication is active + tfa_active_int: + type: integer + enum: [0, 1] + description: Same as `tfa_active` + active: + type: integer + enum: [0, 1] + description: 1 = the account can log in + active_int: + type: integer + enum: [0, 1] + description: Same as `active` + created: + type: string + description: Creation time (`YYYY-MM-DD hh:mm:ss`) + attributes: + type: object + properties: + force_tfa: + type: string + enum: ["0", "1"] + description: "\"1\" = two-factor authentication must be set up at the next login" + force_pw_update: + type: string + enum: ["0", "1"] + description: "\"1\" = the password must be changed at the next login" + selected_domains: + type: array + description: The domains the account administers + items: + type: string + unselected_domains: + description: All other domains, `""` if there are none + oneOf: + - type: array + items: + type: string + - type: string + const: "" + DomainAdminAcl: + type: string + description: >- + ACL of a domain administrator. New domain administrators get all except + `pushover`, `extend_sender_acl` (sender ACL with external addresses), + `unlimited_quota`, `alias_domains` and `domain_desc`. + enum: + - syncjobs + - quarantine + - login_as + - sogo_access + - app_passwds + - bcc_maps + - pushover + - filters + - ratelimit + - spam_policy + - extend_sender_acl + - unlimited_quota + - protocol_access + - smtp_ip_access + - alias_domains + - mailbox_relayhost + - domain_relayhost + - domain_desc + - alias_external_goto + - mailbox_groups + ApiKey: + type: object + description: An API key + properties: + id: + type: integer + description: + type: string + description: Free text; `API_KEY` or `API_KEY_READ_ONLY` for the service keys + access: + type: string + enum: + - ro + - rw + description: "`ro`: read-only (get routes only), `rw`: read/write" + api_key: + type: string + description: The key value, sent in the `X-API-Key` header + allow_from: + type: array + description: IP addresses and networks the key may be used from + items: + type: string + skip_ip_check: + type: integer + enum: [0, 1] + description: 1 = the key may be used from any address + service: + type: integer + enum: [0, 1] + description: 1 = service key from mailcow.conf, can only be changed there + active: + type: integer + enum: [0, 1] + created: + type: [string, "null"] + modified: + type: [string, "null"] + ApiKeyAttributes: + type: object + description: Attributes of an API key for add and edit + properties: + description: + type: string + description: Free text, at most 255 characters + default: "" + access: + type: string + enum: + - ro + - rw + description: "`ro`: read-only (get routes only), `rw`: read/write. Required for a new key." + allow_from: + description: >- + Allowed IP addresses and CIDR networks, as list or as string + separated by spaces, commas, semicolons or newlines. An edit + replaces the list. + oneOf: + - type: string + - type: array + items: + type: string + skip_ip_check: + type: [integer, string, boolean] + description: 1/true = allow the key from any address + default: 0 + active: + type: [integer, string, boolean] + description: 1/true = active + default: 1 + OAuth2Client: + type: object + description: An OAuth2 client of the mailcow OAuth2 server + properties: + id: + type: integer + description: ID used by the API + client_id: + type: string + description: OAuth2 client ID + client_secret: + type: string + description: OAuth2 client secret + redirect_uri: + type: string + description: Redirect (callback) URL + grant_types: + type: [string, "null"] + description: Not used + scope: + type: string + description: Always `profile` + user_id: + type: [string, "null"] + description: Not used + SyslogLogEntry: + type: object + description: A log line of a container + properties: + time: + type: string + description: Unix time + program: + type: string + description: Process that wrote the line + priority: + type: string + description: Syslog priority (`info`, `warning`, `err`, ...) + message: + type: string + AcmeLogEntry: + type: object + properties: + time: + type: string + description: Unix time + message: + type: string + ApiLogEntry: + type: object + properties: + time: + type: integer + description: Unix time + uri: + type: string + description: Request URI + method: + type: string + description: HTTP method + remote: + type: string + description: Client address + data: + type: string + description: Form data of the request (`attr`, `items`), secrets replaced by `*` + AutodiscoverLogEntry: + type: object + properties: + time: + type: integer + description: Unix time + ua: + type: string + description: User agent of the client + user: + type: string + description: Requested e-mail address + ip: + type: string + description: Client address + service: + type: string + description: Offered service (`activesync`, `imap`) or an error + CronLogEntry: + type: object + properties: + time: + type: integer + description: Unix time + priority: + type: string + task: + type: string + description: Name of the task + message: + type: string + NetfilterLogEntry: + type: object + properties: + time: + type: integer + description: Unix time + priority: + type: string + description: "`info`, `warn` or `crit` (bans)" + message: + type: string + RatelimitLogEntry: + type: object + properties: + time: + type: integer + description: Unix time + rcpt: + type: string + description: Recipients, comma separated + from: + type: string + description: Envelope sender + user: + type: string + description: Authenticated user + rl_info: + type: string + description: Rate limit that was hit, `name(hash)` + rl_name: + type: string + description: Name of the rate limit (mailbox or domain) + rl_hash: + type: string + description: Hash of the rate limit bucket (see `delete/rlhash`) + qid: + type: string + description: Postfix queue ID + ip: + type: string + description: Client address + message_id: + type: string + header_subject: + type: string + header_from: + type: string + RspamdHistoryEntry: + type: object + description: A message scanned by Rspamd (fields of Rspamd's history) + properties: + unix_time: + type: integer + time_real: + type: number + description: Scan time in seconds + score: + type: number + required_score: + type: number + action: + type: string + description: "`no action`, `greylist`, `add header`, `rewrite subject`, `soft reject` or `reject`" + thresholds: + type: object + additionalProperties: + type: number + ip: + type: string + user: + type: string + description: Authenticated user, `unknown` for incoming mail + sender_smtp: + type: string + sender_mime: + type: string + rcpt_smtp: + type: array + items: + type: string + rcpt_mime: + type: array + items: + type: string + subject: + type: string + message-id: + type: string + size: + type: integer + is_skipped: + type: boolean + symbols: + type: object + description: Matched symbols by name + additionalProperties: + type: object + properties: + name: + type: string + score: + type: number + metric_score: + type: number + description: + type: string + options: + type: array + items: + type: string + additionalProperties: true + RspamdStats: + type: object + description: Statistics of Rspamd's controller (`/stat`) + properties: + version: + type: string + config_id: + type: string + uptime: + type: integer + description: Seconds + read_only: + type: boolean + scanned: + type: integer + learned: + type: integer + actions: + type: object + description: Number of messages per action + additionalProperties: + type: integer + scan_times: + type: array + items: + type: [number, "null"] + spam_count: + type: integer + ham_count: + type: integer + connections: + type: integer + control_connections: + type: integer + total_learns: + type: integer + statfiles: + type: array + description: Bayes statistics + items: + type: object + fuzzy_hashes: + type: object + additionalProperties: + type: integer + additionalProperties: true + SaslLogEntry: + type: object + properties: + service: + type: string + description: "`imap`, `pop3`, `smtp`, `sieve`, `SSO` (SOGo), ..." + app_password: + type: integer + description: ID of the app password used, 0 = the mailbox password + username: + type: string + real_rip: + type: string + description: Client address + datetime: + type: string + description: Time of the last login (`YYYY-MM-DD hh:mm:ss`) + UiLogEntry: + type: object + properties: + id: + type: integer + task: + type: string + description: ID of the request + type: + type: string + description: "`success`, `danger`, `warning` or `info`" + msg: + type: string + description: The message (JSON) + call: + type: string + description: The call that produced it (JSON) + user: + type: string + description: Account (`API` for API keys) + role: + type: string + remote: + type: string + description: Client address + time: + type: integer + description: Unix time + WatchdogLogEntry: + type: object + properties: + time: + type: string + description: Unix time + service: + type: string + description: Checked service + lvl: + type: string + description: Health in percent + hpnow: + type: string + description: Current health points + hptotal: + type: string + description: Maximum health points + hpdiff: + type: string + description: Change since the last check + ContainerStatus: + type: object + properties: + type: + type: string + const: info + container: + type: string + description: Service name + state: + type: string + description: Docker state (`running`, `exited`, `restarting`, ...) + started_at: + type: string + description: Start time (RFC 3339) + image: + type: string + HostStats: + type: object + properties: + cpu: + type: object + properties: + cores: + type: integer + usage: + type: number + description: CPU usage in percent + memory: + type: object + properties: + total: + type: integer + description: Bytes + usage: + type: number + description: Memory usage in percent + swap: + type: array + description: Swap total, used, free (bytes), used percent, swapped in, swapped out (bytes) + items: + type: number + uptime: + type: number + description: Seconds since boot + system_time: + type: string + description: Host time (`DD.MM.YYYY hh:mm:ss`) + architecture: + type: string + PasswordPolicy: + type: object + description: Password policy; the values are strings, `false` if never saved + properties: + length: + type: [string, boolean] + description: Minimum length + chars: + type: [string, boolean] + description: "\"1\": at least one letter" + special_chars: + type: [string, boolean] + description: "\"1\": at least one character that is no letter or digit" + lowerupper: + type: [string, boolean] + description: "\"1\": lowercase and uppercase letters" + numbers: + type: [string, boolean] + description: "\"1\": at least one digit" + MailboxGroupAttributes: + type: object + description: >- + Attributes of a mailbox group. Flags take `1`, `true`, `on` or `yes` + for on, anything else is off. Lists take a JSON array or a string + separated by spaces, commas, semicolons or newlines; entries are + lowercased. + properties: + name: + type: string + description: 1-100 characters, unique in the domain + description: + type: string + description: Max. 255 characters + default: "" + address: + type: string + description: >- + Distribution address in the domain of the group, not used by a + mailbox or alias yet; empty = none. Wins over `local_part`. + local_part: + type: string + description: Local part of the address in the domain of the group; empty = no address + members: + type: + - array + - string + items: + type: string + description: Regular mailboxes; replaces the manual members the caller may access + add_members: + type: + - array + - string + items: + type: string + description: Mailboxes to add + remove_members: + type: + - array + - string + items: + type: string + description: Manual members to remove + send_as: + type: + - array + - string + items: + type: string + description: >- + Replaces the addresses the members may send as: mailbox or alias + addresses or `@domain`; for the group address use `sender_allowed` + sender_allowed: + type: + - boolean + - integer + - string + description: Members may send as the group address + default: 0 + sogo_visible: + type: + - boolean + - integer + - string + description: Offer the group address as identity in SOGo (only with `sender_allowed`) + default: 0 + internal: + type: + - boolean + - integer + - string + description: Only senders of the domain may write to the group address + default: 0 + active: + type: + - boolean + - integer + - string + default: 1 + imap_grants: + description: >- + Replaces the mailboxes the members may open as Shared/; the + caller needs access to every owner. `subscribe` subscribes the + folders for every member once, within 15 minutes. JSON text is + accepted too. + type: + - array + - string + items: + type: object + required: + - owner + properties: + owner: + type: string + description: Mailbox to share + rights: + type: string + description: >- + read = lookup, read, write-seen; write = also write, + write-deleted, insert, post, expunge, create; full = also delete + enum: + - read + - write + - full + default: read + subscribe: + type: + - boolean + - integer + - string + default: 0 + sogo_grants: + description: >- + Replaces the SOGo folders shared with the members; the caller needs + access to every owner. Pending until the owner has opened SOGo once. + `subscribe` subscribes every member once. JSON text is accepted too. + type: + - array + - string + items: + type: object + required: + - owner + properties: + owner: + type: string + description: Mailbox whose folder is shared + type: + type: string + enum: + - Calendar + - Contacts + default: Calendar + folder: + type: string + description: SOGo folder id (`A-Za-z0-9._-`, max. 100 characters) + default: personal + access: + type: string + enum: + - read + - write + default: read + subscribe: + type: + - boolean + - integer + - string + default: 0 + template_id: + type: + - integer + - string + - "null" + description: >- + Admins only: id of a mailbox template applied to the members; + null, empty or 0 = none + priority: + type: + - integer + - string + description: >- + Admins only: -1000000 to 1000000; of several groups with a + template the one with the highest priority wins + default: 0 + idp_ref: + type: string + description: >- + Admins only: Identity Provider group id to sync the members from + (max. 255 characters); empty = none + MailboxGroup: + type: object + properties: + id: + type: integer + domain: + type: string + name: + type: string + description: + type: string + address: + type: + - string + - "null" + description: Distribution address, null = none + sender_allowed: + type: integer + enum: + - 0 + - 1 + sogo_visible: + type: integer + enum: + - 0 + - 1 + internal: + type: integer + enum: + - 0 + - 1 + template_id: + type: + - integer + - "null" + template: + type: + - string + - "null" + description: Name of the template + priority: + type: integer + idp_ref: + type: + - string + - "null" + description: Identity Provider group id, set = members are synced + members: + type: array + items: + type: object + properties: + username: + type: string + source: + type: string + description: manual = added in mailcow, idp = added by the identity sync + enum: + - manual + - idp + send_as: + type: array + description: Addresses and `@domain` entries the members may send as + items: + type: string + imap_grants: + type: array + items: + type: object + properties: + owner: + type: string + rights: + type: string + enum: + - read + - write + - full + subscribe: + type: integer + enum: + - 0 + - 1 + state: + type: string + description: failed = setting the ACL failed, retried later + enum: + - pending + - applied + - failed + last_error: + type: + - string + - "null" + sogo_grants: + type: array + items: + type: object + properties: + owner: + type: string + type: + type: string + enum: + - Calendar + - Contacts + folder: + type: string + access: + type: string + enum: + - read + - write + subscribe: + type: integer + enum: + - 0 + - 1 + state: + type: string + description: pending (`last_error` folder_missing) until the SOGo folder of the owner exists + enum: + - pending + - applied + - failed + last_error: + type: + - string + - "null" + active: + type: integer + enum: + - 0 + - 1 + created: + type: + - string + - "null" + modified: + type: + - string + - "null" + can_edit: + type: boolean + description: The caller may change the group (false for read-only API keys) + MailboxGroupMemberships: + type: object + properties: + groups: + type: array + items: + type: object + properties: + id: + type: integer + domain: + type: string + name: + type: string + address: + type: + - string + - "null" + sender_allowed: + type: integer + active: + type: integer + priority: + type: integer + template: + type: + - string + - "null" + source: + type: string + enum: + - manual + - idp + template: + type: + - string + - "null" + description: Effective group template of the mailbox + send_as: + type: array + description: Addresses the mailbox may send as through its active groups + items: + type: string + SyncJobAttributes: + type: object + description: >- + Attributes of a sync job. Flags are cast to integers: `1`, `"1"` and + `true` are on; `0`, `"0"`, `false` and the string `"true"` are off. + Flags not sent on add are off. `host1`, `port1`, `enc1` and `authmech1` + are ignored, the connection comes from `source_id`. + properties: + source_id: + type: + - integer + - string + description: >- + Id of an active sync source the caller may see + (`GET /api/v1/get/syncjob_source/all`) + user1: + type: string + description: Remote username at the source, max. 255 characters + password1: + type: string + format: password + description: >- + Remote password; required unless the source uses XOAUTH2 (ignored + then); empty on edit = keep + mins_interval: + type: + - integer + - string + description: Minutes between runs, 1-43800 + subfolder2: + type: string + description: Folder in the local mailbox to sync into, empty = none + default: "" + exclude: + type: string + description: Regular expression of remote folders to skip + default: "" + maxage: + type: + - integer + - string + description: Only sync messages up to this age in days (1-32000), 0 = all + default: 0 + maxbytespersecond: + type: + - integer + - string + description: >- + Bandwidth limit in bytes/s (1-125000000), 0 = unlimited; the global + limit of `edit/imapsync_settings` caps it + default: 0 + timeout1: + type: + - integer + - string + description: Timeout of the remote connection in seconds (1-32000) + default: 600 + timeout2: + type: + - integer + - string + description: Timeout of the local connection in seconds (1-32000) + default: 600 + custom_params: + type: array + description: >- + Extra imapsync options allowed by `GET /api/v1/get/syncjob_options`; + replaces the stored list, empty or null = none. Max. 100 options, + values max. 1000 characters, each value is one argument. + items: + $ref: "#/components/schemas/SyncJobCustomParam" + delete2duplicates: + type: + - integer + - string + - boolean + description: Delete duplicates in the local mailbox (--delete2duplicates) + delete1: + type: + - integer + - string + - boolean + description: Delete messages at the source after they were synced (--delete1) + delete2: + type: + - integer + - string + - boolean + description: Delete local messages that are not at the source (--delete2) + automap: + type: + - integer + - string + - boolean + description: Map special folders like "Sent Items" to their local counterparts (--automap) + skipcrossduplicates: + type: + - integer + - string + - boolean + description: Skip duplicates across folders, first come first served (--skipcrossduplicates) + subscribeall: + type: + - integer + - string + - boolean + description: Subscribe all folders (--subscribeall) + dry: + type: + - integer + - string + - boolean + description: Dry run, change nothing (--dry) + active: + type: + - integer + - string + - boolean + description: The job runs; a new job without `active` is inactive + default: 0 + SyncJobCustomParam: + type: object + required: + - o + properties: + o: + type: string + description: Option name, case-insensitive, leading dashes are removed + example: folder + v: + type: string + description: Value, empty for flags + default: "" + example: INBOX + SyncJob: + type: object + description: A sync job; the remote password is never returned. + properties: + id: + type: integer + user2: + type: string + description: Local mailbox + user1: + type: string + description: Remote username + source_id: + type: integer + subfolder2: + type: string + exclude: + type: string + maxage: + type: integer + mins_interval: + type: integer + maxbytespersecond: + type: string + description: Bytes/s as text, "0" = unlimited + timeout1: + type: integer + timeout2: + type: integer + custom_params: + type: + - string + - "null" + description: 'JSON text of the option list, e.g. `[{"o":"folder","v":"INBOX"}]`' + custom_params_legacy: + type: + - string + - "null" + description: Free-text options of jobs from before the allowlist, not used by the runner + delete2duplicates: + type: integer + delete1: + type: integer + delete2: + type: integer + automap: + type: integer + skipcrossduplicates: + type: integer + subscribeall: + type: integer + dry: + type: integer + active: + type: integer + regextrans2: + type: + - string + - "null" + description: Legacy column, read-only + authmd51: + type: integer + description: Legacy column, read-only + domain2: + type: string + description: Legacy column, read-only + is_running: + type: integer + last_run: + type: + - string + - "null" + success: + type: + - integer + - "null" + description: Result of the last run (1 = imapsync exited with 0), null = not run yet + exit_status: + type: + - string + - "null" + description: Exit status name of imapsync, e.g. EX_OK + prio: + type: integer + description: Queue priority, higher runs first + created: + type: + - string + - "null" + modified: + type: + - string + - "null" + source_name: + type: + - string + - "null" + source_description: + type: + - string + - "null" + source_host: + type: + - string + - "null" + source_port: + type: + - integer + - "null" + source_enc: + type: + - string + - "null" + source_auth_type: + type: + - string + - "null" + source_created_by: + type: + - string + - "null" + source_scope: + type: + - string + - "null" + source_oauth_flow: + type: + - string + - "null" + source_active: + type: + - integer + - "null" + source_oauth_token_expires: + type: + - integer + - "null" + description: Expiry (Unix time) of the token of a client_credentials source + source_oauth_last_refresh_error: + type: + - string + - "null" + user_token_expires: + type: + - integer + - "null" + description: Expiry (Unix time) of the sign-in token of an authorization_code source + user_token_error: + type: + - string + - "null" + user_token_exists: + type: integer + description: 1 = a sign-in token exists for (source, local mailbox, user1) + log: + type: string + description: Output of the last run; empty with `no_log` + SyncJobSourceAttributes: + type: object + description: >- + Attributes of a sync source; on edit, attributes that are not sent keep + their value. + properties: + name: + type: string + description: 1-100 characters, unique per creator + description: + type: string + description: Max. 255 characters + default: "" + host: + type: string + description: IMAP server, host name or IP address (`host1` is accepted too) + port: + type: + - integer + - string + description: 1-65535 (`port1` is accepted too) + enc: + type: string + description: TLS = STARTTLS (`enc1` is accepted too) + enum: + - TLS + - SSL + - PLAIN + default: TLS + verify_cert: + type: + - integer + - string + - boolean + description: Verify the server certificate; `0`, `"0"`, `false` or empty = no + default: 1 + auth_type: + type: string + description: >- + PLAIN, LOGIN and CRAM-MD5 use the password of each job, XOAUTH2 an + OAuth2 token. Users cannot create or edit XOAUTH2 sources, but may + use the ones they see. + enum: + - PLAIN + - LOGIN + - CRAM-MD5 + - XOAUTH2 + default: PLAIN + active: + type: + - integer + - string + description: 1 = usable for jobs (cast to integer) + default: 1 + scope: + type: string + description: >- + Who may use the source: `all` (admins only), `domain` (the + `domains`), `user` (the `users`; none = only the creator). Sources + of users and client_credentials sources are always `user` without + targets. On edit the targets only change when `scope` is sent. + enum: + - all + - domain + - user + default: user + domains: + type: array + description: Domains for scope `domain` (at least one), the caller must manage them + items: + type: string + users: + type: array + description: Mailboxes for scope `user`, the caller must have access to them + items: + type: string + oauth_flow: + type: string + description: >- + XOAUTH2 grant: client_credentials = one token of the source for all + mailboxes of the tenant; authorization_code = every mailbox owner + signs in once in the mailcow UI (redirect URI + `https:///syncjob-oauth`) + enum: + - client_credentials + - authorization_code + default: client_credentials + oauth_token_endpoint: + type: string + description: XOAUTH2, required; https:// URL + oauth_authorize_endpoint: + type: string + description: XOAUTH2 authorization_code, required; https:// URL + oauth_userinfo_endpoint: + type: string + description: >- + XOAUTH2 authorization_code, optional: identity endpoint used when + the token response has no usable id_token; https:// URL + oauth_client_id: + type: string + description: XOAUTH2, required, max. 500 characters + oauth_client_secret: + type: string + format: password + description: >- + XOAUTH2, required, max. 500 characters; empty on edit = keep. Never + returned. + oauth_scope: + type: string + description: XOAUTH2, required, max. 500 characters + oauth_extra_params: + description: >- + XOAUTH2, optional: extra OAuth2 parameters as JSON object or JSON + text (max. 4000 characters). `prompt`, `access_type`, `login_hint`, + `domain_hint` and `hd` go to the sign-in URL, others to the token + request; standard fields cannot be overridden. + type: + - object + - string + - "null" + additionalProperties: + type: + - string + - number + - boolean + - "null" + SyncJobSource: + type: object + description: A sync source; secrets are never returned. + properties: + id: + type: integer + name: + type: string + description: + type: string + created_by: + type: string + description: Creator; `API` for API keys, empty = handed over to the admins (creator deleted) + scope: + type: string + enum: + - all + - domain + - user + domains: + type: array + items: + type: string + users: + type: array + items: + type: string + host: + type: string + port: + type: integer + enc: + type: + - string + - "null" + host1: + type: string + description: Same as `host` + port1: + type: integer + description: Same as `port` + enc1: + type: + - string + - "null" + description: Same as `enc` + verify_cert: + type: integer + auth_type: + type: + - string + - "null" + active: + type: integer + oauth_flow: + type: string + oauth_token_endpoint: + type: + - string + - "null" + oauth_authorize_endpoint: + type: + - string + - "null" + oauth_userinfo_endpoint: + type: + - string + - "null" + oauth_client_id: + type: + - string + - "null" + oauth_scope: + type: + - string + - "null" + oauth_extra_params: + type: + - string + - "null" + description: JSON text, null for callers who may not edit the source + oauth_token_expires: + type: + - integer + - "null" + description: Expiry (Unix time) of the token of a client_credentials source + oauth_last_refresh_error: + type: + - string + - "null" + oauth_last_refresh_attempt: + type: + - string + - "null" + oauth_redirect_uri: + type: string + description: Only for authorization_code sources, register it at the provider + has_client_secret: + type: boolean + has_access_token: + type: boolean + can_edit: + type: boolean + description: The caller may change the source (false for read-only API keys) + created: + type: + - string + - "null" + modified: + type: + - string + - "null" + SyncJobSettings: + type: object + properties: + max_parallel: + type: integer + description: Sync jobs running at the same time + max_bytes_per_second: + type: integer + description: Bandwidth limit per sync job process in bytes/s, 0 = unlimited + max_kb_per_second: + type: integer + description: The same in KB/s + IdentityProviderAttributes: + type: object + required: + - authsource + description: >- + Configuration of the Identity Provider. Flags marked (boolean) are on + for any non-empty value except `0`/`"0"`/`false`; flags marked (0/1) are + cast to integers (the string `"true"` is 0). + properties: + authsource: + type: string + description: Provider type (case-insensitive) + enum: + - keycloak + - generic-oidc + - ldap + client_id: + type: string + description: Keycloak, generic-oidc + client_secret: + type: string + format: password + description: Keycloak, generic-oidc + redirect_url: + type: string + description: Keycloak, generic-oidc; URL of mailcow the provider redirects to after the login + redirect_url_extra: + type: + - array + - string + items: + type: string + description: Keycloak, generic-oidc; more allowed redirect URLs, only changed when sent + server_url: + type: string + description: Keycloak base URL + realm: + type: string + description: Keycloak realm + version: + type: string + description: Keycloak version + mailpassword_flow: + type: + - integer + - string + - boolean + description: (0/1) Keycloak; check mail client passwords through the Keycloak admin API + default: 0 + group_paths: + type: string + description: >- + Keycloak group sync: comma-separated group paths, e.g. `/Sales` or + `/mailcow/*` (all groups below /mailcow); needs the `query-groups` + permission + default: "" + authorize_url: + type: string + description: generic-oidc authorization endpoint + token_url: + type: string + description: generic-oidc token endpoint + userinfo_url: + type: string + description: generic-oidc userinfo endpoint + client_scopes: + type: string + description: generic-oidc scopes + default: openid profile email mailcow_template + host: + type: string + description: LDAP server, several separated by commas (spaces are removed) + default: "" + port: + type: + - integer + - string + description: LDAP port + default: 389 + use_ssl: + type: + - boolean + - integer + - string + description: (boolean) LDAP over SSL + default: false + use_tls: + type: + - boolean + - integer + - string + description: (boolean) LDAP StartTLS, ignored with `use_ssl` + default: false + basedn: + type: string + description: LDAP base DN of the user search + binddn: + type: string + description: LDAP bind DN + bindpass: + type: string + format: password + description: LDAP bind password + username_field: + type: string + description: LDAP attribute with the mail address of the user + default: mail + filter: + type: string + description: LDAP filter of the users that may log in + default: "" + attribute_field: + type: string + description: LDAP attribute whose value is matched against `mappers` + default: "" + id_attribute: + type: string + description: >- + LDAP attribute with a stable user id; empty = objectGUID, entryUUID, + nsUniqueId or ipaUniqueID, else the DN + default: "" + disabled_filter: + type: string + description: >- + LDAP filter of disabled users (Active Directory accounts with + ACCOUNTDISABLE are always disabled) + default: "" + group_basedn: + type: string + description: LDAP base DN of the group search, empty = `basedn` + default: "" + group_filter: + type: string + description: LDAP filter of the synced groups, required for the group sync + default: "" + group_name_attribute: + type: string + default: cn + group_member_mode: + type: string + description: >- + LDAP source of the memberships: memberOf of the users, member + attribute of the groups, or Active Directory incl. nested groups + enum: + - memberof + - member + - ad_chain + default: memberof + group_member_attribute: + type: string + description: LDAP member attribute for `group_member_mode` member + default: member + ignore_ssl_error: + type: + - boolean + - integer + - string + description: (boolean) Do not verify TLS certificates + default: false + login_provisioning: + type: + - boolean + - integer + - string + description: (boolean) Create mailboxes at their first login + default: false + periodic_sync: + type: + - integer + - string + - boolean + description: (0/1) Keycloak, LDAP; update mailboxes from the provider every `sync_interval` + default: 0 + import_users: + type: + - integer + - string + - boolean + description: (0/1) Keycloak, LDAP; create mailboxes for new users of the provider + default: 0 + sync_interval: + type: + - integer + - string + description: Keycloak, LDAP; minutes between sync runs (at least 1) + default: 15 + offboarding: + type: + - integer + - string + - boolean + description: >- + (0/1) Keycloak, LDAP; disable the login (mail still arrives) of users + disabled at the provider or missing in two complete runs; the sync + enables only mailboxes it disabled + default: 0 + offboarding_limit: + type: + - integer + - string + description: >- + Keycloak, LDAP; runs that would disable more mailboxes or remove + more group memberships than this share in percent (0-100, at least + 5 mailboxes) are blocked + default: 10 + group_sync: + type: + - integer + - string + - boolean + description: >- + (0/1) Keycloak, LDAP; sync the members of provider groups to mailbox + groups (members added in mailcow stay) + default: 0 + group_autocreate: + type: + - integer + - string + - boolean + description: >- + (0/1) Keycloak, LDAP; create a mailbox group for every provider + group without one + default: 0 + group_default_domain: + type: string + description: Keycloak, LDAP; domain of new groups whose mail is not in a mailcow domain + default: "" + default_template: + type: string + description: >- + Mailbox template for new mailboxes without a matching mapping (not + used for updates); only changed when sent + mappers: + type: array + items: + type: string + description: >- + Attribute values, each mapped to the template at the same position + in `templates`; only changed when both lists are sent, pairs with an + empty value are dropped + templates: + type: array + items: + type: string + description: Mailbox templates for `mappers` + IdentityProviderSettings: + type: object + description: >- + Stored settings (see `IdentityProviderAttributes`), mostly as strings. + Secrets are `*` for read-only API keys. + properties: + authsource: + type: string + client_secret: + type: string + bindpass: + type: string + access_token: + type: string + description: Cached admin API token of Keycloak + redirect_url_extra: + type: array + items: + type: string + mappers: + type: array + items: + type: string + templates: + type: array + items: + type: string + use_ssl: + type: boolean + use_tls: + type: boolean + ignore_ssl_error: + type: boolean + login_provisioning: + type: + - boolean + - integer + additionalProperties: + type: string + IdentitySyncStatus: + type: object + properties: + provider: + type: string + description: Configured provider, empty = none + can_sync: + type: boolean + description: The provider can be synced (Keycloak, LDAP) + sync_enabled: + type: boolean + description: Scheduled runs are on (periodic sync, import, offboarding or group sync) + counts: + type: object + description: Mailboxes of the provider (no resources) + properties: + accounts: + type: integer + linked: + type: integer + description: Linked to a user of the provider + idp_disabled: + type: integer + description: Login disabled by the sync + missing: + type: integer + description: Not found at the provider by the last runs + runs: + type: array + description: The last 10 runs, newest first + items: + $ref: "#/components/schemas/IdentitySyncRun" + IdentitySyncRun: + type: object + properties: + id: + type: integer + provider: + type: string + mode: + type: string + enum: + - run + - preview + - force + status: + type: string + enum: + - pending + - running + - ok + - blocked + - error + requested_by: + type: string + description: Who requested the run, empty for scheduled runs + created: + type: string + started: + type: + - string + - "null" + finished: + type: + - string + - "null" + summary: + type: + - object + - "null" + description: >- + Result, null while pending: `counts` per kind of change, `details` + (up to 50 entries per list), `blocked`, `errors` (up to 50), `mode`; + failed runs only `error` and `mode` + properties: + counts: + type: object + additionalProperties: + type: integer + details: + type: object + additionalProperties: + type: array + items: + type: string + blocked: + type: boolean + errors: + type: array + items: + type: string + error: + type: string + mode: + type: string + IdentityLink: + type: object + properties: + provider: + type: string + external_id: + type: + - string + - "null" + description: User id at the provider + idp_disabled: + type: integer + description: 1 = login disabled by the identity sync + missing_since: + type: + - string + - "null" + description: Since when the sync does not find the user at the provider responses: Unauthorized: - description: Unauthorized + description: >- + The API key is unknown or inactive (`authentication failed`), or the + request comes from an address the key does not allow + (`api access denied for ip
`) content: application/json: schema: - type: object - properties: - type: - type: string - example: error - msg: - type: string - example: authentication failed - required: - - type - - msg + $ref: "#/components/schemas/Error" + example: + type: error + msg: authentication failed + Forbidden: + description: The API key is read-only + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + example: + type: error + msg: API read/write access denied + WriteResult: + description: >- + The messages of the call; `{"type": "success", "msg": "Task completed"}` + or `{"type": "error", "msg": "Cannot ... item"}` if it produced none. + Check `type`: the status is 200 for failures too. + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/Messages" + - $ref: "#/components/schemas/TaskResult" + examples: + messages: + summary: Messages of the call + value: + - type: success + log: + - mailbox + - add + - alias + - address: alias@example.org + goto: user@example.org + msg: + - alias_added + - alias@example.org + failed: + summary: Failed without a message + value: + type: error + msg: Cannot add item + AcmeLogs: + description: The log entries, `{}` if there are none + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/AcmeLogEntry" + example: + - time: "1794308452" + message: mail.example.org - Certificates were successfully validated, no changes or renewals required, sleeping for another day. + ApiLogs: + description: The log entries, `{}` if there are none + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ApiLogEntry" + example: + - time: 1794334338 + uri: /api/v1/edit/domain-admin + method: POST + remote: 192.0.2.10 + data: "attr='{\"active\":\"1\",\"password\":\"*\",\"password2\":\"*\"}', items='[\"domainadmin1\"]'" + - time: 1794334330 + uri: /api/v1/get/status/version + method: GET + remote: 192.0.2.10 + data: "" + AutodiscoverLogs: + description: The log entries, `{}` if there are none + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/AutodiscoverLogEntry" + example: + - time: 1794311051 + ua: Microsoft Office/16.0 (Windows NT 10.0; Microsoft Outlook 16.0.17928; Pro) + user: john.doe@example.org + ip: 198.51.100.7 + service: activesync + CronLogs: + description: The log entries, `{}` if there are none + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/CronLogEntry" + example: + - time: 1794096901 + priority: warning + task: Group Shares + message: "group_imap_grant_failed: info@example.org" + DovecotLogs: + description: The log entries, `{}` if there are none + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/SyslogLogEntry" + example: + - time: "1794334332" + program: dovecot + priority: info + message: "imap-login: Login: user=, method=PLAIN, rip=198.51.100.7, lip=172.22.1.250, mpid=310, TLS, session=" + NetfilterLogs: + description: The log entries, `{}` if there are none + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/NetfilterLogEntry" + example: + - time: 1794334242 + priority: crit + message: Banning 203.0.113.5/32 for 30 minutes + - time: 1794334242 + priority: warn + message: "203.0.113.5 matched rule id 3 (warning: unknown[203.0.113.5]: SASL LOGIN authentication failed: ...)" + PostfixLogs: + description: The log entries, `{}` if there are none + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/SyslogLogEntry" + example: + - time: "1794334301" + program: postfix/smtpd + priority: info + message: "connect from mail.example.com[198.51.100.20]" + RatelimitLogs: + description: The log entries, `{}` if there are none + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/RatelimitLogEntry" + example: + - time: 1794334001 + rcpt: jane@example.com + from: john.doe@example.org + user: john.doe@example.org + rl_info: john.doe@example.org(RLsdz3tuabozgd4oacbdh8kc78) + rl_name: john.doe@example.org + rl_hash: RLsdz3tuabozgd4oacbdh8kc78 + qid: E3CF91500458 + ip: 172.22.1.248 + message_id: 6a-5d892500-7-240abd80@example.org + header_subject: Newsletter + header_from: "\"John Doe\" " + RspamdHistory: + description: The scanned messages, `{}` if there are none + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/RspamdHistoryEntry" + example: + - unix_time: 1794333685 + time_real: 0.510136 + score: -1.229459 + required_score: 15 + action: no action + thresholds: + reject: 15 + add header: 8 + greylist: 7 + ip: 198.51.100.20 + user: unknown + sender_smtp: jane@example.com + sender_mime: jane@example.com + rcpt_smtp: + - john.doe@example.org + rcpt_mime: + - john.doe@example.org + subject: Meeting tomorrow + message-id: 20261110190100.428319@mail.example.com + size: 1015 + is_skipped: false + symbols: + DMARC_POLICY_ALLOW: + name: DMARC_POLICY_ALLOW + score: -0.5 + metric_score: -0.5 + description: DMARC permit policy + options: + - example.com + - none + SaslLogs: + description: The log entries, `{}` if there are none + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/SaslLogEntry" + example: + - service: imap + app_password: 0 + username: john.doe@example.org + real_rip: 198.51.100.7 + datetime: "2026-11-10 19:07:01" + SogoLogs: + description: The log entries, `{}` if there are none + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/SyslogLogEntry" + example: + - time: "1794334303" + program: sogod + priority: notice + message: "[52]: 198.51.100.7 \"GET /SOGo/so/john.doe@example.org/Mail/view HTTP/1.1\" 200 2578/0 0.002 - - 0 - 12" + UiLogs: + description: The log entries, `{}` if there are none + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/UiLogEntry" + example: + - id: 1819 + task: 97D254 + type: success + msg: "[\"domain_admin_modified\",\"domainadmin1\"]" + call: "[\"domain_admin\",\"edit\",{\"username\":[\"domainadmin1\"],\"active\":\"1\"}]" + user: API + role: admin + remote: 192.0.2.10 + time: 1794319670 + WatchdogLogs: + description: The log entries, `{}` if there are none + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/WatchdogLogEntry" + example: + - time: "1794334334" + service: Dovecot + lvl: "100" + hpnow: "12" + hptotal: "12" + hpdiff: "0" + parameters: + MailboxTagsQuery: + name: tags + in: query + required: false + description: "Comma-separated tags: only mailboxes with a tag containing one of them" + schema: + type: string + example: sales,support + examples: + MailboxDetails: + summary: A mailbox + value: + username: john.doe@example.org + active: 1 + active_int: 1 + domain: example.org + name: John Doe + local_part: john.doe + quota: 3221225472 + messages: 1207 + attributes: + force_pw_update: "0" + force_tfa: "0" + tls_enforce_in: "0" + tls_enforce_out: "0" + sogo_access: "1" + imap_access: "1" + pop3_access: "0" + smtp_access: "1" + sieve_access: "1" + eas_access: "1" + dav_access: "1" + relayhost: "0" + shared: "0" + passwd_update: "2026-11-03 09:37:37" + mailbox_format: "maildir:" + quarantine_notification: hourly + quarantine_category: reject + attribute_hash: "" + recovery_email: "" + custom_attributes: + department: Sales + quota_used: 418219315 + percent_in_use: 13 + created: "2026-11-03 09:37:37" + modified: "2026-11-06 20:20:46" + authsource: mailcow + percent_class: success + last_imap_login: 1794052021 + last_smtp_login: 1793788402 + last_pop3_login: 0 + last_sso_login: 1794005152 + last_sogo_login: 1794005160 + max_new_quota: 10737418240 + spam_aliases: 1 + pushover_active: 0 + rl: + value: "100" + frame: h + rl_scope: mailbox + is_relayed: 0 + sender_acl: + - sales@example.org + tags: + - sales + MailboxList: + summary: Mailboxes + value: + - username: john.doe@example.org + active: 1 + active_int: 1 + domain: example.org + name: John Doe + local_part: john.doe + quota: 3221225472 + messages: 1207 + attributes: + force_pw_update: "0" + force_tfa: "0" + tls_enforce_in: "0" + tls_enforce_out: "0" + sogo_access: "1" + imap_access: "1" + pop3_access: "0" + smtp_access: "1" + sieve_access: "1" + eas_access: "1" + dav_access: "1" + relayhost: "0" + shared: "0" + passwd_update: "2026-11-03 09:37:37" + mailbox_format: "maildir:" + quarantine_notification: hourly + quarantine_category: reject + attribute_hash: "" + custom_attributes: [] + quota_used: 418219315 + percent_in_use: 13 + created: "2026-11-03 09:37:37" + modified: "2026-11-06 20:20:46" + authsource: mailcow + percent_class: success + last_imap_login: 1794052021 + last_smtp_login: 1793788402 + last_pop3_login: 0 + last_sso_login: 0 + last_sogo_login: 1794005160 + max_new_quota: 10737418240 + spam_aliases: 0 + pushover_active: 0 + rl: false + rl_scope: domain + is_relayed: 0 + sender_acl: [] + MailboxSearchPage: + summary: One page of mailboxes + value: + draw: 1 + recordsTotal: 1 + recordsFiltered: 1 + data: + - username: john.doe@example.org + active: 1 + active_int: 1 + domain: example.org + name: John Doe + local_part: john.doe + quota: 3221225472 + messages: 1207 + attributes: + force_pw_update: "0" + force_tfa: "0" + tls_enforce_in: "0" + tls_enforce_out: "0" + sogo_access: "1" + imap_access: "1" + pop3_access: "0" + smtp_access: "1" + sieve_access: "1" + eas_access: "1" + dav_access: "1" + relayhost: "0" + shared: "0" + passwd_update: "2026-11-03 09:37:37" + mailbox_format: "maildir:" + quarantine_notification: hourly + quarantine_category: reject + attribute_hash: "" + custom_attributes: [] + quota_used: 418219315 + percent_in_use: 13 + created: "2026-11-03 09:37:37" + modified: "2026-11-06 20:20:46" + authsource: mailcow + percent_class: success + last_imap_login: 1794052021 + last_smtp_login: 1793788402 + last_pop3_login: 0 + last_sso_login: 0 + last_sogo_login: 1794005160 + max_new_quota: 10737418240 + spam_aliases: 0 + pushover_active: 0 + rl: false + rl_scope: domain + is_relayed: 0 + sender_acl: [] + tags: + - sales security: - ApiKeyAuth: [] @@ -55,3065 +4028,1967 @@ security: paths: /api/v1/add/alias: post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - mailbox - - add - - alias - - active: "1" - address: alias@domain.tld - goto: destination@domain.tld - - null - msg: - - alias_added - - alias@domain.tld - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} tags: - Aliases + summary: Create aliases + operationId: addAlias description: >- - You may create your own mailbox alias using this action. It takes a JSON - object containing a domain informations. + Creates an alias for every address in `address`, all with the same + destinations; domain administrators for their domains. Flags not sent + are 0: send `active`, `sogo_visible` and `sender_allowed` as 1 to get + an alias like the UI creates it. - Only one `goto*` option can be used, for ex. if you want learn as spam, - then send just `goto_spam = 1` in request body. - operationId: Create alias + + Messages: `alias_added`; errors `is_alias_or_mailbox`, `goto_invalid`, + `external_goto_denied`, `max_alias_exceeded`. requestBody: content: application/json: schema: - example: - active: "1" - address: alias@domain.tld - goto: destination@domain.tld - properties: - active: - description: is alias active or not - type: boolean - address: - description: 'alias address, for catchall use "@domain.tld"' - type: string - goto: - description: "destination address, comma separated" - type: string - goto_ham: - description: learn as ham - type: boolean - goto_null: - description: silently ignore - type: boolean - goto_spam: - description: learn as spam - type: boolean - sogo_visible: - description: toggle visibility as selectable sender in SOGo - type: boolean type: object - summary: Create alias + properties: + address: + type: string + description: >- + Alias addresses of mailcow domains or alias domains, + separated by spaces, commas, semicolons or line breaks; + `@example.org` is a catch-all + goto: + type: string + description: >- + Destination addresses, separated by spaces, commas, + semicolons or line breaks; required unless a `goto_*` flag + is 1 + goto_null: + type: [boolean, integer, string] + description: 1 = discard the mail silently; wins over `goto_spam` and `goto_ham` + default: 0 + goto_spam: + type: [boolean, integer, string] + description: 1 = learn the mail as spam; wins over `goto_ham` + default: 0 + goto_ham: + type: [boolean, integer, string] + description: 1 = learn the mail as ham + default: 0 + active: + type: [boolean, integer, string] + description: 1 = active, 0 = inactive + default: 0 + sogo_visible: + type: [boolean, integer, string] + description: 1 = selectable sender in SOGo (aliases with a local mailbox as destination) + default: 0 + internal: + type: [boolean, integer, string] + description: 1 = only reachable from its own domain and its alias domains + default: 0 + sender_allowed: + type: [boolean, integer, string] + description: 1 = the destination mailboxes may send as this alias + default: 0 + public_comment: + type: string + description: Comment shown to the users + maxLength: 160 + private_comment: + type: string + description: Comment for administrators + maxLength: 160 + required: + - address + example: + address: sales@example.org + goto: anna@example.org,ben@example.org + active: "1" + sogo_visible: "1" + sender_allowed: "1" + internal: "0" + public_comment: Sales team + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" /api/v1/add/time_limited_alias: post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - mailbox - - add - - time_limited_alias - - address: info@domain.tld - domain: domain.tld - - null - msg: - - mailbox_modified - - info@domain.tld - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} tags: - - Aliases + - Mailbox user settings + summary: Create a time-limited alias + operationId: addTimeLimitedAlias description: >- - You may create a time limited alias using this action. It takes a JSON - object containing a domain and mailbox informations. - Mailcow will generate a random alias. - operationId: Create time limited alias + Creates a random alias that delivers to the mailbox until it expires. + Needs the user ACL `spam_alias`. `domain` must be the domain of the + mailbox or one of its alias domains. + + + Messages: `mailbox_modified`; errors `domain_invalid`, + `validity_missing`. requestBody: + required: true content: application/json: schema: - example: - username: info@domain.tld - domain: domain.tld - description: my time limited alias - validity: 8760 - permanent: false + type: object + required: + - domain properties: username: - description: 'the mailbox an alias should be created for' type: string + description: Mailbox the alias delivers to (required for API keys) domain: - description: "the domain" type: string + description: Domain of the alias description: - description: "a description for the alias, defaults to an empty string" type: string + default: "" + description: Note for the alias validity: - description: "how many hours the alias stays valid, 1 to 87600, defaults to 8760 (one year)" - type: integer + type: [integer, string] + minimum: 1 + maximum: 87600 + default: 8760 + description: Hours until the alias expires permanent: - description: "keep the alias after it expired, defaults to false" - type: boolean - type: object - summary: Create time limited alias + type: [boolean, integer, string] + default: false + description: true keeps the alias after it expired + example: + username: john.doe@example.org + domain: example.org + description: Online shop registration + validity: 720 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" /api/v1/add/api-key: post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - api - - add - - key - - description: provisioning - access: rw - allow_from: "192.0.2.10, 2001:db8::/64" - skip_ip_check: "0" - active: "1" - msg: - - api_key_added - - provisioning - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} + summary: Create API key + description: >- + Creates an API key with a random value; read the value with + `get/api-key/all`. Without `skip_ip_check`, `allow_from` is required. + + + Messages: `api_key_added`; errors `api_key_access_invalid`, + `api_key_network_invalid`, `ip_list_empty`. + operationId: addApiKey tags: - API Keys - description: >- - Create an API key with a random value (admin only, not with a read-only - API key). Get the key value with the GET method. Without - `skip_ip_check` at least one IP/network in `allow_from` is required. - operationId: Create API key requestBody: + required: true content: application/json: schema: - example: - description: provisioning - access: rw - allow_from: "192.0.2.10, 2001:db8::/64" - skip_ip_check: "0" - active: "1" - properties: - description: - description: free text, max. 255 characters - type: string - access: - description: "ro (read-only, GET endpoints only) or rw (read-write), required" - enum: - - ro - - rw - type: string - allow_from: - description: >- - IPs/CIDR networks the key may be used from, separated by - commas, spaces or newlines (or an array) - type: string - skip_ip_check: - description: allow the key from any IP - type: boolean - active: - description: is key active or not - type: boolean - type: object - summary: Create API key + allOf: + - $ref: "#/components/schemas/ApiKeyAttributes" + - required: + - access + example: + description: provisioning + access: rw + allow_from: "192.0.2.10, 2001:db8::/64" + skip_ip_check: 0 + active: 1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" /api/v1/add/app-passwd: post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - app_passwd - - add - - active: "1" - username: info@domain.tld - app_name: wordpress - app_passwd: keyleudecticidechothistishownsan31 - app_passwd2: keyleudecticidechothistishownsan31 - protocols: - - imap_access - - dav_access - - smtp_access - - eas_access - - pop3_access - - sieve_access - msg: app_passwd_added - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} tags: - App Passwords + summary: Create an app password + operationId: addAppPassword description: >- - Using this endpoint you can create a new app password for a specific - mailbox. - operationId: Create App Password + Adds an app password to a mailbox, valid only for the listed protocols. + Needs the user ACL `app_passwds`. + + + Messages: `app_passwd_added`; errors `password_complexity`, + `password_mismatch`, `app_name_empty`. requestBody: + required: true content: application/json: schema: - example: - active: "1" - username: info@domain.tld - app_name: wordpress - app_passwd: keyleudecticidechothistishownsan31 - app_passwd2: keyleudecticidechothistishownsan31 - protocols: - - imap_access - - dav_access - - smtp_access - - eas_access - - pop3_access - - sieve_access + type: object + required: + - app_name + - app_passwd + - app_passwd2 properties: - active: - description: is alias active or not - type: boolean username: - description: mailbox for which the app password should be created type: string + description: Mailbox the app password belongs to (required for API keys) app_name: - description: name of your app password type: string + description: Name of the app password app_passwd: - description: your app password type: string + format: password + description: The password, checked against the password policy app_passwd2: - description: your app password type: string - type: object - summary: Create App Password - /api/v1/add/bcc: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - bcc - - add - - active: "1" - bcc_dest: bcc@awesomecow.tld - local_dest: mailcow.tld - type: sender - - null - msg: bcc_saved - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Address Rewriting - description: >- - Using this endpoint you can create a BCC map to forward all mails via a - bcc for a given domain. - operationId: Create BCC Map - requestBody: - content: - application/json: - schema: - example: - active: "1" - bcc_dest: bcc@awesomecow.tld - local_dest: mailcow.tld - type: sender - properties: - active: - description: 1 for a active user account 0 for a disabled user account - type: number - bcc_dest: - description: the email address where all mails should be send to - type: string - local_dest: - description: the domain which emails should be forwarded - type: string - type: - description: the type of bcc map can be `sender` or `rcpt` - enum: [sender, rcpt] - type: string - type: object - summary: Create BCC Map - /api/v1/add/dkim: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - dkim - - add - - dkim_selector: dkim - domains: hanspeterlol.de - key_size: "2048" - msg: - - dkim_added - - hanspeterlol.de - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - DKIM - description: Using this endpoint you can generate new DKIM keys. - operationId: Generate DKIM Key - requestBody: - content: - application/json: - schema: - example: - dkim_selector: dkim - domains: mailcow.tld - key_size: "2048" - properties: - dkim_selector: - description: the DKIM selector default dkim - type: string - domains: - description: a list of domains for which a dkim key should be generated - type: string - key_size: - description: the key size (1024, 2048, 3072 or 4096) - type: number - type: object - summary: Generate DKIM Key - /api/v1/add/dkim_duplicate: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - dkim - - duplicate - - from_domain: mailcow.tld - to_domain: awesomecow.tld - msg: - - dkim_duplicated - - mailcow.tld - - awesomecow.tld - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - DKIM - description: Using this endpoint you can duplicate the DKIM Key of one domain. - operationId: Duplicate DKIM Key - requestBody: - content: - application/json: - schema: - example: - from_domain: mailcow.tld - to_domain: awesomecow.tld - properties: - fron_domain: - description: the domain where the dkim key should be copied from - type: string - to_domain: - description: the domain where the dkim key should be copied to - type: string - type: object - summary: Duplicate DKIM Key - /api/v1/add/domain: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - ratelimit - - edit - - domain - - object: domain.tld - rl_frame: s - rl_value: "10" - msg: - - rl_saved - - domain.tld - type: success - - log: - - mailbox - - add - - domain - - active: "1" - aliases: "400" - restart_sogo: "1" - backupmx: "0" - defquota: "3072" - description: some decsription - domain: domain.tld - mailboxes: "10" - maxquota: "10240" - quota: "10240" - relay_all_recipients: "0" - rl_frame: s - rl_value: "10" - tags: ["tag1", "tag2"] - - null - msg: - - domain_added - - domain.tld - type: success - schema: - type: array - items: - type: object - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - description: OK - headers: {} - tags: - - Domains - description: >- - You may create your own domain using this action. It takes a JSON object - containing a domain informations. - operationId: Create domain - requestBody: - content: - application/json: - schema: - example: - active: "1" - aliases: "400" - backupmx: "0" - defquota: "3072" - description: some decsription - domain: domain.tld - mailboxes: "10" - maxquota: "10240" - quota: "10240" - relay_all_recipients: "0" - rl_frame: s - rl_value: "10" - restart_sogo: "10" - tags: ["tag1", "tag2"] - properties: - active: - description: is domain active or not - type: boolean - aliases: - description: limit count of aliases associated with this domain - type: number - backupmx: - description: relay domain or not - type: boolean - defquota: - description: predefined mailbox quota in `add mailbox` form - type: number - description: - description: Description of domain - type: string - domain: - description: Fully qualified domain name - type: string - gal: - description: >- - is domain global address list active or not, it enables - shared contacts accross domain in SOGo webmail - type: boolean - mailboxes: - description: limit count of mailboxes associated with this domain - type: number - maxquota: - description: maximum quota per mailbox - type: number - quota: - description: maximum quota for this domain (for all mailboxes in sum) - type: number - restart_sogo: - description: restart SOGo to activate the domain in SOGo - type: number - relay_all_recipients: - description: >- - if not, them you have to create "dummy" mailbox for each - address to relay - type: boolean - relay_unknown_only: - description: Relay non-existing mailboxes only. Existing mailboxes will be delivered locally. - type: boolean - rl_frame: - enum: - - s - - m - - h - - d - type: string - rl_value: - description: rate limit value - type: number - tags: - description: tags for this Domain + format: password + description: The password again + protocols: + description: Protocols the password is valid for; not listed = not allowed type: array items: type: string - type: object - summary: Create domain - /api/v1/add/domain-admin: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - domain_admin - - add - - active: "1" - domains: mailcow.tld - password: "*" - password2: "*" - username: testadmin - msg: - - domain_admin_added - - testadmin - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Domain admin - description: >- - Using this endpoint you can create a new Domain Admin user. This user - has full control over a domain, and can create new mailboxes and - aliases. - operationId: Create Domain Admin user - requestBody: - content: - application/json: - schema: - example: - active: "1" - domains: mailcow.tld - password: supersecurepw - password2: supersecurepw - username: testadmin - properties: + - imap_access + - smtp_access + - pop3_access + - sieve_access + - dav_access + - eas_access active: - description: 1 for a active user account 0 for a disabled user account - type: number - domains: - description: the domains the user should be a admin of - type: string - password: - description: domain admin user password - type: string - password2: - description: domain admin user password - type: string - username: - description: the username for the admin user - type: string - type: object - summary: Create Domain Admin user - /api/v1/add/sso/domain-admin: - post: + type: [integer, string] + enum: [0, 1, "0", "1"] + default: 0 + description: 1 active, 0 inactive + example: + username: john.doe@example.org + app_name: Thunderbird + app_passwd: eiQu4ahz8iePh + app_passwd2: eiQu4ahz8iePh + protocols: + - imap_access + - smtp_access + - sieve_access + active: 1 responses: + "200": + $ref: "#/components/responses/WriteResult" "401": $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - token: "591F6D-5C3DD2-7455CD-DAF1C1-AA4FCC" - description: OK - headers: { } - tags: - - Single Sign-On - description: >- - Using this endpoint you can issue a token for Domain Admin user. This token can be used for - autologin Domain Admin user by using query_string var sso_token={token}. Token expiration time is 30s - operationId: Issue Domain Admin SSO token - requestBody: - content: - application/json: - schema: - example: - username: testadmin - properties: - username: - description: the username for the admin user - type: object - type: object - summary: Issue Domain Admin SSO token - /api/v1/edit/da-acl: + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/add/bcc: post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - type: success - log: - - acl - - edit - - testadmin - - username: - - testadmin - da_acl: - - syncjobs - - quarantine - - login_as - - sogo_access - - app_passwds - - bcc_maps - - pushover - - filters - - ratelimit - - spam_policy - - extend_sender_acl - - unlimited_quota - - protocol_access - - smtp_ip_access - - alias_domains - - domain_desc - msg: - - acl_saved - - testadmin - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Domain admin - description: >- - Using this endpoint you can edit the ACLs of a Domain Admin user. This user - has full control over a domain, and can create new mailboxes and - aliases. - operationId: Edit Domain Admin ACL - requestBody: - content: - application/json: - schema: - example: - items: - - testadmin - attr: - da_acl: - - syncjobs - - quarantine - - login_as - - sogo_access - - app_passwds - - bcc_maps - - pushover - - filters - - ratelimit - - spam_policy - - extend_sender_acl - - unlimited_quota - - protocol_access - - smtp_ip_access - - alias_domains - - domain_desc - properties: - items: - description: contains the domain admin username you want to edit - type: object - attr: - properties: - da_acl: - description: contains the list of acl names that are active for this user - type: object - type: object - summary: Edit Domain Admin ACL - /api/v1/edit/domain-admin: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - type: success - log: - - domain_admin - - edit - - username: testadmin - active: ["0","1"] - username_new: testadmin - domains: ["domain.tld"] - password: "*" - password2: "*" - msg: - - domain_admin_modified - - testadmin - schema: - properties: - type: - enum: - - success - - danger - - error - type: string - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: object - description: OK - headers: {} - tags: - - Domain admin - description: >- - Using this endpoint you can edit a existing Domain Admin user. This user - has full control over a domain, and can create new mailboxes and - aliases. - operationId: Edit Domain Admin user - requestBody: - content: - application/json: - schema: - example: - items: - - testadmin - attr: - active: - - '0' - - '1' - username_new: testadmin - domains: ["domain.tld"] - password: supersecurepassword - password2: supersecurepassword - properties: - attr: - properties: - active: - description: is the domain admin active or not - type: boolean - username_new: - description: the username of the domain admin, change this to change the username - type: string - domains: - description: a list of all domains managed by this domain admin - type: array - items: - type: string - password: - description: the new domain admin user password - type: string - password2: - description: the new domain admin user password for confirmation - type: string - type: object - items: - description: contains the domain admin username you want to edit - type: object - summary: Edit Domain Admin user - /api/v1/add/domain-policy: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - policy - - add - - domain - - domain: domain.tld - object_from: "*@baddomain.tld" - object_list: bl - msg: - - domain_modified - - domain.tld - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Domain antispam policies - description: >- - You may create your own domain policy using this action. It takes a JSON - object containing a domain informations. - operationId: Create domain policy - requestBody: - content: - application/json: - schema: - example: - domain: domain.tld - object_from: "*@baddomain.tld" - object_list: bl - properties: - domain: - description: domain name to which policy is associated to - type: string - object_from: - description: exact address or use wildcard to match whole domain - type: string - object_list: - enum: - - wl - - bl - type: string - type: object - summary: Create domain policy - /api/v1/add/fwdhost: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - fwdhost - - add - - filter_spam: "0" - hostname: hosted.mailcow.de - msg: - - forwarding_host_added - - "5.1.76.202, 2a00:f820:417::202" - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Fordwarding Hosts - description: >- - Add a new Forwarding host to mailcow. You can chose to enable or disable - spam filtering of incoming emails by specifing `filter_spam` 0 = - inactive, 1 = active. - operationId: Add Forward Host - requestBody: - content: - application/json: - schema: - example: - filter_spam: "0" - hostname: hosted.mailcow.de - properties: - filter_spam: - description: "1 to enable spam filter, 0 to disable spam filter" - type: number - hostname: - description: contains the hostname you want to add - type: string - type: object - summary: Add Forward Host - /api/v1/add/mailbox: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - mailbox - - add - - mailbox - - active: "1" - domain: domain.tld - local_part: info - name: Full name - password: "*" - password2: "*" - quota: "3072" - force_pw_update: "1" - force_tfa: "1" - tls_enforce_in: "1" - tls_enforce_out: "1" - tags: ["tag1", "tag2"] - - null - msg: - - mailbox_added - - info@domain.tld - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Mailboxes - description: >- - You may create your own mailbox using this action. It takes a JSON - object containing a domain informations. - operationId: Create mailbox - requestBody: - content: - application/json: - schema: - example: - active: "1" - domain: domain.tld - local_part: info - name: Full name - authsource: mailcow - password: atedismonsin - password2: atedismonsin - quota: "3072" - force_pw_update: "1" - force_tfa: "1" - tls_enforce_in: "1" - tls_enforce_out: "1" - tags: ["tag1", "tag2"] - properties: - active: - description: is mailbox active or not - type: boolean - domain: - description: domain name - type: string - local_part: - description: left part of email address - type: string - name: - description: Full name of the mailbox user - type: string - authsource: - description: Specifies the authentication source for the mailbox. - type: string - enum: [mailcow, ldap, keycloak, generic-oidc] - default: mailcow - password2: - description: mailbox password for confirmation - type: string - password: - description: mailbox password when using `mailcow` as the authentication source. - type: string - quota: - description: mailbox quota - type: number - force_pw_update: - description: forces the user to update its password on first login - type: boolean - force_tfa: - description: force 2FA enrollment at login - type: boolean - tls_enforce_in: - description: force inbound email tls encryption - type: boolean - tls_enforce_out: - description: force oubound tmail tls encryption - type: boolean - shared: - description: >- - shared mailbox: no login of its own, members of groups open it through shares; - password and password2 may be empty (a random password is set) - type: boolean - type: object - summary: Create mailbox - - /api/v1/add/mailbox-group: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - mailbox_group - - add - - group - - domain: example.org - name: Sales - local_part: sales - members: - - alice@example.org - msg: - - group_added - - Sales - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - warning - - error - type: string - type: object - description: OK - headers: {} - tags: - - Groups - description: >- - Create a mailbox group (admins; domain admins with the "mailbox_groups" - ACL for their domains). With an address the group is a distribution - list; its alias is maintained by the group and read-only in the alias - API. - operationId: Create group - requestBody: - content: - application/json: - schema: - example: - domain: example.org - name: Sales - local_part: sales - members: - - alice@example.org - - bob@example.org - send_as: - - shared@example.org - sender_allowed: "1" - active: "1" - properties: - domain: - description: domain of the group (required) - type: string - name: - description: unique per domain, max. 100 characters - type: string - description: - description: max. 255 characters - type: string - local_part: - description: local part of the group address (domain of the group), empty = no address - type: string - address: - description: full group address instead of local_part, empty = no address - type: string - members: - description: >- - mailboxes (array or list separated by commas, spaces or - newlines); replaces the manual members you may access - type: array - send_as: - description: addresses (mailbox or alias) or @domain the members may send as - type: array - sender_allowed: - description: members may send as the group address - type: boolean - sogo_visible: - description: show the group address as SOGo identity (needs sender_allowed) - type: boolean - internal: - description: only accept mail from senders of the domain - type: boolean - template_id: - description: mailbox template applied to the members (admin only), empty = none - type: number - priority: - description: highest priority wins if a mailbox is in several groups with a template (admin only) - type: number - active: - type: boolean - type: object - summary: Create group - /api/v1/add/oauth2-client: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - oauth2 - - add - - client - - redirect_uri: "https://mailcow.tld" - msg: Added client access - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - oAuth Clients - description: Using this endpoint you can create a oAuth clients. - operationId: Create oAuth Client - requestBody: - content: - application/json: - schema: - example: - redirect_uri: "https://mailcow.tld" - properties: - redirect_uri: - description: the uri where you should be redirected after oAuth - type: string - type: object - summary: Create oAuth Client - /api/v1/add/recipient_map: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - recipient_map - - add - - active: "1" - recipient_map_new: target@mailcow.tld - recipient_map_old: recipient@mailcow.tld - - null - msg: - - recipient_map_entry_saved - - recipient@mailcow.tld - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} tags: - Address Rewriting + summary: Create a BCC map + operationId: addBccMap description: >- - Using this endpoint you can create a recipient map to forward all mails - from one email address to another. - operationId: Create Recipient Map + Sends a hidden copy of the mail of a domain or address to `bcc_dest`. + Domain administrators need the BCC maps ACL. Undeliverable copies are + not reported to the local destination. + + + Messages: `bcc_saved`; errors `bcc_must_be_email`, `bcc_exists`. requestBody: content: application/json: schema: - example: - active: "1" - recipient_map_new: target@mailcow.tld - recipient_map_old: recipient@mailcow.tld - properties: - active: - description: 1 for a active user account 0 for a disabled user account - type: number - recipient_map_new: - description: the email address that should receive the forwarded emails - type: string - recipient_map_old: - description: the email address which emails should be forwarded - type: string type: object - summary: Create Recipient Map - /api/v1/add/relayhost: - post: + properties: + local_dest: + type: string + description: A mailcow domain or the address of a mailbox or alias + bcc_dest: + type: string + description: One e-mail address that gets the copies (use an alias for several) + type: + type: string + enum: + - sender + - rcpt + description: >- + `sender`: copy the mail sent by `local_dest`; `rcpt`: copy + the mail sent to it + active: + type: [boolean, integer, string] + description: 1 = active, 0 = inactive + default: 0 + required: + - local_dest + - bcc_dest + - type + example: + local_dest: example.org + bcc_dest: archive@example.com + type: rcpt + active: "1" responses: + "200": + $ref: "#/components/responses/WriteResult" "401": $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/add/dkim: + post: + summary: Generate DKIM keys + description: >- + Generates an RSA DKIM key for each domain or alias domain; existing + keys are kept. + + + Messages: `dkim_added`; error `dkim_domain_or_sel_invalid`. + operationId: addDkimKey + tags: + - DKIM + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - domains + - key_size + properties: + domains: + type: string + description: >- + Domain names, separated by spaces, commas, semicolons or + line breaks + dkim_selector: + type: string + default: dkim + description: Selector (letters, digits, `-`, `_`, `.`) + key_size: + type: [integer, string] + description: RSA key size in bits + example: + domains: example.org, example.net + dkim_selector: dkim + key_size: 2048 + responses: "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/add/dkim_duplicate: + post: + summary: Copy a DKIM key to other domains + description: >- + Copies the DKIM key and selector of `from_domain` to the `to_domain` + domains, replacing their keys. Target names are not checked. + + + Messages: `dkim_duplicated`; error `dkim_domain_or_sel_invalid`. + operationId: duplicateDkimKey + tags: + - DKIM + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - from_domain + - to_domain + properties: + from_domain: + type: string + description: Domain whose key is copied + to_domain: + description: Domain name or list of domain names that get the key + oneOf: + - type: string + - type: array + items: + type: string + example: + from_domain: example.org + to_domain: + - example.net + - example.com + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/add/domain: + post: + summary: Add a domain + description: >- + Adds a domain. Quotas are in MiB. Fields not sent come from the domain + template in `template` (default: `Default`). Also sets the rate limit + and creates a DKIM key. SOGo sees the new domain only after a restart + (`restart_sogo`). + + + Messages: `domain_added`, `dkim_added`, `rl_saved`; errors + `domain_invalid`, `domain_exists`, `maxquota_empty`. + operationId: addDomain + tags: + - Domains + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - domain + properties: + domain: + type: string + description: Domain name (stored lowercase, IDN as punycode) + description: + type: string + description: Description, default the domain name + template: + type: [integer, string] + description: ID of the domain template for fields not sent + aliases: + type: [integer, string] + description: Max. number of aliases + mailboxes: + type: [integer, string] + description: Max. number of mailboxes + defquota: + type: [integer, string] + description: Default quota of new mailboxes in MiB, must not be 0 + maxquota: + type: [integer, string] + description: Max. quota per mailbox in MiB, must not be 0 + quota: + type: [integer, string] + description: Quota of the whole domain in MiB + active: + type: [integer, string] + enum: [0, 1, "0", "1"] + description: Domain active + gal: + type: [integer, string] + enum: [0, 1, "0", "1"] + description: Global address list in SOGo + backupmx: + type: [integer, string] + enum: [0, 1, "0", "1"] + description: Relay this domain (backup MX) + relay_all_recipients: + type: [integer, string] + enum: [0, 1, "0", "1"] + description: >- + Relay all recipients, not only those with a mailbox; 1 sets + `backupmx` + relay_unknown_only: + type: [integer, string] + enum: [0, 1, "0", "1"] + description: >- + Relay only recipients without a local mailbox; 1 sets + `backupmx` and `relay_all_recipients` + tags: + type: array + items: + type: string + description: >- + Tags of the domain, at most 25 (more are dropped with + `tag_limit_exceeded`) + rl_value: + type: [integer, string] + description: Rate limit, messages per `rl_frame`; empty or 0 = none + rl_frame: + type: string + enum: [s, m, h, d] + description: Rate limit time frame + dkim_selector: + type: string + description: Selector of the DKIM key that is created + key_size: + type: [integer, string] + description: RSA size of the new DKIM key in bits; empty or 0 = no key + restart_sogo: + type: [integer, string] + enum: [0, 1, "0", "1"] + default: 0 + description: Restart SOGo afterwards + example: + domain: example.org + description: Example Org + aliases: 400 + mailboxes: 10 + defquota: 3072 + maxquota: 10240 + quota: 10240 + active: 1 + gal: 1 + backupmx: 0 + relay_all_recipients: 0 + relay_unknown_only: 0 + tags: + - customer + rl_value: 100 + rl_frame: h + dkim_selector: dkim + key_size: 2048 + restart_sogo: 1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/add/domain-admin: + post: + summary: Create domain administrator + description: >- + Creates a domain administrator for the given domains with the default + ACLs. The username is stored in lowercase and must not be in use by a + mailbox or administrator. Without `active: 1` the account is disabled. + Unknown domains are skipped; if none exists, nothing is created, but + `domain_admin_added` is reported anyway. + + + Messages: `domain_admin_added`; errors `domain_invalid`, + `object_exists`, `password_complexity`, `password_mismatch`. + operationId: addDomainAdmin + tags: + - Domain admin + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + username: + type: string + description: Username (letters, digits, `_`, `.`, `-`; stored in lowercase) + password: + type: string + description: Password, must match the password policy + password2: + type: string + description: The password again + domains: + description: Domain or list of domains the account administers + oneOf: + - type: string + - type: array + items: + type: string + active: + type: [integer, string, boolean] + description: 1 = the account can log in, 0 = disabled + default: 0 + required: + - username + - password + - password2 + - domains + example: + username: domainadmin1 + password: "Rand0m-Passw0rd!" + password2: "Rand0m-Passw0rd!" + domains: + - example.org + - example.com + active: 1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/add/sso/domain-admin: + post: + summary: Issue domain administrator login token + description: >- + Issues a one-time login token for an active domain administrator, valid + for 30 seconds. Opening `/domainadmin/mailbox?sso_token=` on the + mailcow host logs in without password or two-factor authentication. + + + Messages: error `object_doesnt_exist`. + operationId: issueDomainAdminSsoToken + tags: + - Single Sign-On + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + username: + type: string + description: Username of the domain administrator + required: + - username + example: + username: domainadmin1 + responses: + "200": + description: The token, or the error messages content: application/json: - examples: - response: - value: - - log: - - relayhost - - add - - hostname: "mailcow.tld:25" - password: supersecurepassword - username: testuser - msg: - - relayhost_added - - "" - type: success schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} + oneOf: + - type: object + properties: + token: + type: string + description: Login token (five groups of six hex digits) + required: + - token + - $ref: "#/components/schemas/Messages" + example: + token: 591F6D-5C3DD2-7455CD-DAF1C1-AA4FCC + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/da-acl: + post: + summary: Edit domain administrator ACLs + description: >- + Grants the ACLs in `da_acl` and revokes all others; an empty or missing + `da_acl` revokes all. + + + Messages: `acl_saved`; error `Cannot determine current ACL`. + operationId: editDomainAdminAcl tags: - - Routing - description: Using this endpoint you can create Sender-Dependent Transports. - operationId: Create Sender-Dependent Transports + - Domain admin + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + items: + description: Username of the domain administrator, or a list of usernames + oneOf: + - type: string + - type: array + items: + type: string + attr: + type: object + properties: + da_acl: + description: The ACLs to grant (a single name or a list) + oneOf: + - $ref: "#/components/schemas/DomainAdminAcl" + - type: array + items: + $ref: "#/components/schemas/DomainAdminAcl" + required: + - items + - attr + example: + items: + - domainadmin1 + attr: + da_acl: + - syncjobs + - quarantine + - login_as + - sogo_access + - app_passwds + - bcc_maps + - filters + - ratelimit + - spam_policy + - protocol_access + - smtp_ip_access + - mailbox_relayhost + - domain_relayhost + - alias_external_goto + - mailbox_groups + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/domain-admin: + post: + summary: Edit domain administrators + description: >- + Changes domain administrators. Fields not sent keep their value, but + `force_tfa` and `force_pw_update` are reset to 0. `domains` replaces + the domain list, empty keeps it; an empty `password` keeps the + password. FIDO2 keys are not moved on rename. A password error ends + the call after the domains were saved. + + + Messages: `domain_admin_modified`; errors `domain_invalid`, + `username_invalid`, `password_mismatch`, `password_complexity`. + operationId: editDomainAdmin + tags: + - Domain admin + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + items: + description: Username of the domain administrator, or a list of usernames + oneOf: + - type: string + - type: array + items: + type: string + attr: + type: object + properties: + active: + type: [integer, string, boolean] + description: 1 = active, 0 = disabled + username_new: + type: string + description: New username (letters, digits, `_`, `.`, `-`) + domains: + description: The domains the account administers from now on + oneOf: + - type: string + - type: array + items: + type: string + password: + type: string + description: New password; empty or missing keeps the password + password2: + type: string + description: The new password again + force_tfa: + type: [integer, string, boolean] + description: 1 = two-factor authentication must be set up at the next login + default: 0 + force_pw_update: + type: [integer, string, boolean] + description: 1 = the password must be changed at the next login + default: 0 + disable_tfa: + type: [integer, string, boolean] + description: Present (any value) = turn off two-factor authentication + required: + - items + - attr + example: + items: + - domainadmin1 + attr: + active: 1 + domains: + - example.org + password: "N3w-Passw0rd!" + password2: "N3w-Passw0rd!" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/add/domain-policy: + post: + summary: Add a sender to a domain allow or deny list + description: >- + Adds a sender to the allow list (`wl`) or deny list (`bl`) of a domain; + a sender can be on only one list. Needs the ACL `spam_policy`. + + + Messages: `domain_modified`; errors `policy_list_from_invalid`, + `policy_list_from_exists`. + operationId: addDomainPolicy + tags: + - Domain antispam policies + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - domain + - object_list + - object_from + properties: + domain: + type: string + description: Domain the entry belongs to + object_list: + type: string + enum: [wl, bl] + description: "`wl` allow list (whitelist), `bl` deny list (blacklist)" + object_from: + type: string + description: >- + Sender address or pattern with `*` as wildcard; letters, + digits and `@ _ . - *` + example: + domain: example.org + object_list: wl + object_from: "*@partner.example.com" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/add/fwdhost: + post: + tags: + - Forwarding Hosts + summary: Add forwarding hosts + operationId: addForwardingHost + description: >- + Adds hosts whose mail is accepted unconditionally: no DNSBL checks, no + greylisting, no spam rejects. A name becomes one entry per address of + its SPF record, else its MX hosts, else A/AAAA. + + + Messages: `forwarding_host_added`; errors `invalid_host`. requestBody: content: application/json: schema: - example: - hostname: "mailcow.tld:25" - password: supersecurepassword - username: testuser + type: object properties: hostname: - description: the hostname of the smtp server with port type: string - password: - description: the password for the smtp user - type: string - username: - description: the username used to authenticate - type: string - type: object - summary: Create Sender-Dependent Transports - /api/v1/add/resource: - post: + description: >- + IPv4 or IPv6 address, network in CIDR notation, host name + or domain name + filter_spam: + type: [boolean, integer, string] + description: 1 = scan the mail for spam (junk folder, never rejected); else not + default: 0 + required: + - hostname + example: + hostname: relay.example.com + filter_spam: "1" responses: + "200": + $ref: "#/components/responses/WriteResult" "401": $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - mailbox - - add - - resource - - active: "1" - description: test - domain: mailcow.tld - kind: location - multiple_bookings: "0" - multiple_bookings_custom: "" - multiple_bookings_select: "0" - - null - msg: - - resource_added - - mailcow.tld - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/fwdhost: + post: tags: - - Resources - description: Using this endpoint you can create Resources. - operationId: Create Resources + - Forwarding Hosts + summary: Update forwarding hosts + operationId: editForwardingHost + description: >- + Turns the spam filter of forwarding hosts on or off; without + `keep_spam` it is turned on. requestBody: content: application/json: schema: - example: - active: "1" - description: test - domain: mailcow.tld - kind: location - multiple_bookings: "0" - multiple_bookings_custom: "" - multiple_bookings_select: "0" + type: object properties: + items: + description: >- + Hosts as get/fwdhost lists them (`host`), a single value or + a list + oneOf: + - type: array + items: + type: string + - type: string + attr: + type: object + properties: + keep_spam: + type: [boolean, integer, string] + description: 1 = do not scan the mail for spam; else scan it + required: + - items + - attr + example: + items: + - 192.0.2.25 + - "2001:db8::25" + attr: + keep_spam: "0" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/add/mailbox: + post: + tags: + - Mailboxes + summary: Create a mailbox + operationId: addMailbox + description: >- + Creates a mailbox, also for domain admins. Quotas are in MiB. Fields + not sent come from the mailbox template in `template` (default: + `Default`). Quota 0 (unlimited) needs the `unlimited_quota` ACL. + + + Messages: `mailbox_added`; errors `object_exists`, `domain_not_found`, + `password_complexity`, `max_mailbox_exceeded`, + `mailbox_quota_exceeded`. + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/MailboxAdd" + example: + local_part: john.doe + domain: example.org + name: John Doe + password: Moo2Shoh5aiXu + password2: Moo2Shoh5aiXu + quota: 3072 + active: 1 + force_pw_update: 1 + tags: + - sales + acl: + - spam_alias + - spam_score + - delimiter_action + - app_passwds + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/add/mailbox-group: + post: + summary: Create mailbox group + description: >- + Creates a mailbox group. With an address it is also a distribution list + to its members; the address counts against the alias limit of the + domain. Domain admins need the `mailbox_groups` ACL. Follow-up steps + that fail answer a warning and are retried later. + + + Messages: `group_added`; warnings `group_template_failed`, + `group_imap_grant_failed`; errors `object_exists`, + `group_address_invalid`, `max_alias_exceeded`, `group_member_invalid`. + operationId: addMailboxGroup + tags: + - Groups + requestBody: + content: + application/json: + schema: + allOf: + - type: object + required: + - domain + - name + properties: + domain: + type: string + description: Domain of the group (no alias domain), case-insensitive + - $ref: "#/components/schemas/MailboxGroupAttributes" + example: + domain: example.org + name: Sales + description: Sales team + local_part: sales + members: + - alice@example.org + - bob@example.org + send_as: + - orders@example.org + sender_allowed: 1 + imap_grants: + - owner: shared@example.org + rights: write + subscribe: 1 + template_id: 3 + priority: 10 + active: 1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/add/oauth2-client: + post: + summary: Create OAuth2 client + description: >- + Creates an OAuth2 client with random ID and secret; read them with + `get/oauth2-client/all`. The redirect URI is not validated. + + + Messages: `Added client access`. + operationId: addOAuth2Client + tags: + - oAuth Clients + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + redirect_uri: + type: string + description: Redirect (callback) URL of the client application + required: + - redirect_uri + example: + redirect_uri: https://app.example.org/oauth/callback + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/add/recipient_map: + post: + tags: + - Address Rewriting + summary: Create a recipient map + operationId: addRecipientMap + description: >- + Rewrites the recipient before delivery: mail to `recipient_map_old` + goes to `recipient_map_new`. + + + Messages: `recipient_map_entry_saved`; errors + `invalid_recipient_map_old`, `invalid_recipient_map_new`, + `recipient_map_entry_exists`. + requestBody: + content: + application/json: + schema: + type: object + properties: + recipient_map_old: + type: string + description: Original recipient, an e-mail address or a domain (leading `@` optional) + recipient_map_new: + type: string + description: New recipient, an e-mail address or a domain active: - description: 1 for a active transport map 0 for a disabled transport map - type: number - description: - description: a description of the resource + type: [boolean, integer, string] + description: 1 = active, 0 = inactive + default: 0 + required: + - recipient_map_old + - recipient_map_new + example: + recipient_map_old: jane.doe@example.org + recipient_map_new: jane.smith@example.org + active: "1" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/add/relayhost: + post: + tags: + - Routing + summary: Create a sender-dependent transport + operationId: addRelayhost + description: >- + Adds an active relay host, used by domains and mailboxes whose + `relayhost` is set to its ID. Always `smtp:` (TLS when offered, no + SMTPS). Colons in `username` and `password` are stored escaped, but + not by edit/relayhost. + + + Messages: `relayhost_added`; errors `invalid_host`. + requestBody: + content: + application/json: + schema: + type: object + properties: + hostname: type: string + description: "Next hop: `host`, `host:25`, `[host]:587` or `[192.0.2.1]:25`" + username: + type: string + description: SMTP user name, empty for no authentication + default: "" + password: + type: string + description: SMTP password + default: "" + required: + - hostname + example: + hostname: "[smtp.example.com]:587" + username: relay-user@example.com + password: Secret-Passphrase-42 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/add/resource: + post: + tags: + - Resources + summary: Create a resource + operationId: addResource + description: >- + Creates a bookable SOGo resource, also for domain admins. Its address + is made of the letters and digits of `description` (`Meeting Room 1` → + `MeetingRoom1@example.org`). + + + Messages: `resource_added`; errors `resource_invalid`, + `description_invalid`, `object_exists`. + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - domain + - description + - kind + properties: domain: - description: the domain for which the resource should be type: string + description: Domain of the resource + description: + type: string + description: Name of the resource, also the source of its address kind: - description: the kind of recouse + type: string enum: - location - group - thing - type: string + description: Type of resource multiple_bookings: - enum: - - "-1" - - "1" - - custom - type: string - multiple_bookings_custom: - description: always empty - type: number - multiple_bookings_select: - enum: - - "-1" - - "1" - - custom - type: string - type: object - summary: Create Resources + type: [integer, string] + default: 0 + description: >- + 0 always free, -1 unlimited but busy when booked, n ≥ 1 at + most n overlapping bookings; below -1 means -1 + active: + type: [integer, string] + enum: [0, 1, "0", "1"] + default: 0 + description: 1 active, 0 inactive + example: + domain: example.org + description: Meeting Room 1 + kind: location + multiple_bookings: 0 + active: 1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" /api/v1/add/syncjob: post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - syncjob - - add - - job - - username: mailbox@domain.tld - source_id: "3" - user1: username - password1: "*" - mins_interval: "20" - active: "1" - msg: - - mailbox_modified - - mailbox@domain.tld - type: success - schema: - properties: - log: - description: contains request object (secrets are masked as "*") - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} + summary: Create sync job + description: >- + Creates a sync job that copies the remote account `user1` into a local + mailbox; server and authentication come from the sync source. Needs the + `syncjobs` ACL; API keys must set `username`, users always sync into + their own mailbox. An invalid `mins_interval` or `exclude` answers + `access_denied`. + + + Messages: `mailbox_modified`; errors `no_user_defined`, + `imapsync_source_unavailable`, `imapsync_source_oauth_connect_required`, + `object_exists`, `imapsync_custom_param_invalid`. + operationId: addSyncJob tags: - Sync jobs - description: >- - Create a sync job for a local mailbox. Connection data (host, port, - encryption, authentication) comes from the sync source referenced by - `source_id`. Requires the `syncjobs` ACL (user ACL for mailbox users, - domain admin ACL for domain admins). - operationId: Create sync job - summary: Create sync job requestBody: content: application/json: schema: - example: - username: lisa@mailcow.tld - source_id: "3" - user1: demo@remote.tld - password1: supersecretpw - mins_interval: "20" - subfolder2: "/SyncIntoSubfolder" - maxage: "0" - maxbytespersecond: "0" - timeout1: "600" - timeout2: "600" - exclude: "(?i)spam|(?i)junk" - custom_params: - - {o: folder, v: INBOX} - - {o: syncinternaldates, v: ""} - delete2duplicates: "1" - delete1: "0" - delete2: "0" - automap: "1" - skipcrossduplicates: "0" - subscribeall: "1" - dry: "0" - active: "1" - properties: - username: - description: local mailcow mailbox (destination, user2); users always create jobs for their own mailbox - type: string - source_id: - description: >- - id of a sync source visible to the caller (`GET /api/v1/get/syncjob_source/all`). - type: integer - user1: - description: >- - remote username at the source. For XOAUTH2 authorization_code sources - a token for (source_id, local mailbox, user1) must exist, i.e. the - mailbox owner must have signed in via `/syncjob-oauth` first - (`imapsync_source_oauth_connect_required` otherwise). - type: string - password1: - description: >- - remote password, required unless the source uses XOAUTH2 (ignored then) - type: string - mins_interval: - description: sync interval in minutes (1-43800) - type: number - subfolder2: - description: sync into subfolder on destination (empty = do not use subfolder) - type: string - maxage: - description: only sync messages up to this age in days (0 = ignore age) - type: number - maxbytespersecond: - description: per-job bandwidth limit in bytes/s (0 = unlimited, capped by the global limit) - type: number - timeout1: - description: timeout for connection to remote host - type: number - timeout2: - description: timeout for connection to local host - type: number - exclude: - description: exclude objects (regex) - type: string - custom_params: - description: >- - Allowlisted imapsync options as a list of option/value pairs (must be - an array). - `o` is the option name without leading dashes (see `GET - /api/v1/get/syncjob_options`), `v` the value. The allowlist decides - per option: `true` = a non-empty value is required, `false` = flag - without value (`v` must be empty), string = regular expression the - whole value must match. Values are passed to imapsync as a single argument. - type: array - items: - type: object - properties: - o: - type: string - v: - type: string - delete2duplicates: - description: delete duplicates on destination (--delete2duplicates) - type: boolean - delete1: - description: delete from source when completed (--delete1) - type: boolean - delete2: - description: delete messages on destination that are not on source (--delete2) - type: boolean - automap: - description: try to automap folders ("Sent items", "Sent" => "Sent" etc.) (--automap) - type: boolean - skipcrossduplicates: - description: skip duplicate messages across folders (first come, first serve) (--skipcrossduplicates) - type: boolean - subscribeall: - description: subscribe all folders (--subscribeall) - type: boolean - dry: - description: dry run, nothing is changed (--dry) - type: boolean - active: - description: enables or disables the sync job - type: boolean - host1: - description: >- - Removed. Host, port, encryption and authentication now come from - the sync source (`source_id`, see `/api/v1/add/syncjob_source`). - The attribute is ignored. - deprecated: true - type: string - port1: - description: >- - Removed. Host, port, encryption and authentication now come from - the sync source (`source_id`, see `/api/v1/add/syncjob_source`). - The attribute is ignored. - deprecated: true - type: string - enc1: - description: >- - Removed. Host, port, encryption and authentication now come from - the sync source (`source_id`, see `/api/v1/add/syncjob_source`). - The attribute is ignored. - deprecated: true - type: string - authmech1: - description: >- - Removed. Host, port, encryption and authentication now come from - the sync source (`source_id`, see `/api/v1/add/syncjob_source`). - The attribute is ignored. - deprecated: true - type: string - type: object + allOf: + - type: object + required: + - username + - source_id + - user1 + - mins_interval + properties: + username: + type: string + description: >- + Local mailbox to sync into (`user2`), cannot be changed + later; users may leave it out + - $ref: "#/components/schemas/SyncJobAttributes" + example: + username: alice@example.org + source_id: 3 + user1: alice@old-provider.example.com + password1: remote-password + mins_interval: 20 + subfolder2: Imported + exclude: "(?i)spam|(?i)junk" + custom_params: + - o: folder + v: INBOX + delete2duplicates: 1 + automap: 1 + subscribeall: 1 + active: 1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" /api/v1/add/syncjob_source: post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - syncjob - - add - - source - - name: Example import - host: imap.example.org - port: "993" - enc: SSL - auth_type: PLAIN - scope: all - msg: - - imapsync_source_added - - Example import - type: success - schema: - properties: - log: - description: contains request object (secrets are masked as "*") - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} + summary: Create sync source + description: >- + Creates a reusable IMAP server with its authentication that sync jobs + use by `source_id`. Needs the `syncjobs` ACL. Unless an admin creates + it, OAuth2 endpoints must resolve to public addresses. A + client_credentials source fetches its token on save and is saved even + when that fails. + + + Messages: `imapsync_source_added`, `imapsync_source_token_refresh_failed`; + errors `imapsync_source_host_invalid`, `imapsync_source_auth_invalid`, + `imapsync_source_oauth_invalid`, `imapsync_source_oauth_endpoint_invalid`, + `object_exists`. + operationId: addSyncJobSource tags: - Sync jobs - description: >- - Create a reusable IMAP sync source. A sync job binds to a source by id; - the source carries host/port/encryption and either static credentials - (PLAIN/LOGIN/CRAM-MD5 — the password is supplied per job) or an OAuth2 - configuration (XOAUTH2). Requires the `syncjobs` ACL. Validation errors - are returned as translated `danger` messages, nothing is written then. - operationId: Create sync job source - summary: Create sync job source requestBody: content: application/json: schema: - example: - name: Example import - description: "" - host: imap.example.org - port: "993" - enc: SSL - auth_type: PLAIN - active: "1" - scope: domain - domains: - - example.org - properties: - name: - description: >- - source name, max. 100 characters, unique per creator - type: string - description: - description: >- - free text shown in the UI, max. 255 characters - type: string - host: - description: >- - remote IMAP host (hostname or IP, max. 253 characters). - `host1` is accepted as an alias. - type: string - port: - description: >- - remote IMAP port (1-65535). `port1` is accepted as an alias. - type: integer - enc: - description: >- - TLS (STARTTLS) / SSL / PLAIN. `enc1` is accepted as an alias. - type: string - enum: - - TLS - - SSL - - PLAIN - verify_cert: - description: >- - 1 = check the server certificate (SSL and STARTTLS, default), 0 = do not check - it (self-signed, expired or not matching the host). - type: integer - enum: - - 0 - - 1 - auth_type: - description: >- - authentication mechanism; PLAIN/LOGIN/CRAM-MD5 use the per-job - password, XOAUTH2 uses OAuth2 tokens. XOAUTH2 sources can only be created - and edited by admins and domain admins (`access_denied` for users); users - can use XOAUTH2 sources visible to them in their sync jobs. - type: string - enum: - - PLAIN - - LOGIN - - CRAM-MD5 - - XOAUTH2 - oauth_flow: - description: >- - XOAUTH2 grant type (default client_credentials). client_credentials - sources are always private to their creator (scope is forced to `user` - without targets). - type: string - enum: - - client_credentials - - authorization_code - oauth_authorize_endpoint: - description: >- - authorize URL, required for authorization_code. Must be an https:// URL - without credentials and with a valid hostname - type: string - oauth_token_endpoint: - description: >- - token URL, required for XOAUTH2. Must be an https:// URL without credentials and with a valid hostname - type: string - oauth_userinfo_endpoint: - description: >- - optional identity endpoint for authorization_code (used when the token - response has no usable id_token). Must be an https:// URL without credentials and with a valid hostname - type: string - oauth_client_id: - description: >- - OAuth2 client id, required for XOAUTH2 - type: string - oauth_client_secret: - description: >- - OAuth2 client secret, required for XOAUTH2. Never returned by GET. - type: string - oauth_scope: - description: >- - OAuth2 scope, required for XOAUTH2 - type: string - oauth_extra_params: - description: >- - optional extra token request parameters: a JSON object with scalar values, - sent either as object or as JSON string (empty = none). They never - override the grant fields. - oneOf: - - type: object - additionalProperties: true - - type: string - scope: - description: >- - visibility: `all` (admins only), `domain` (needs `domains`) or `user` - (listed `users`; no targets = private to the creator). Users always - create private sources. - type: string - enum: - - all - - domain - - user - domains: - description: target domains when scope is domain - type: array - items: - type: string - users: - description: target mailboxes when scope is user - type: array - items: - type: string - active: - description: >- - enables or disables the source - type: boolean - type: object - /api/v1/add/tls-policy-map: - post: + allOf: + - type: object + required: + - name + - host + - port + - $ref: "#/components/schemas/SyncJobSourceAttributes" + examples: + password: + summary: Password source for a domain + value: + name: Old provider + description: Migration from the old provider + host: imap.example.com + port: 993 + enc: SSL + auth_type: PLAIN + scope: domain + domains: + - example.org + active: 1 + client_credentials: + summary: XOAUTH2 source with an app token (Microsoft 365) + value: + name: M365 tenant + host: outlook.office365.com + port: 993 + enc: SSL + auth_type: XOAUTH2 + oauth_flow: client_credentials + oauth_token_endpoint: https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000/oauth2/v2.0/token + oauth_client_id: 11111111-2222-3333-4444-555555555555 + oauth_client_secret: client-secret-value + oauth_scope: https://outlook.office365.com/.default + active: 1 responses: + "200": + $ref: "#/components/responses/WriteResult" "401": $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - tls_policy_maps - - add - - parameters: "" - active: "1" - dest: mailcow.tld - policy: encrypt - - null - msg: - - tls_policy_map_entry_saved - - mailcow.tld - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/add/tls-policy-map: + post: tags: - Outgoing TLS Policy Map Overrides - description: Using this endpoint you can create a TLS policy map override. - operationId: Create TLS Policy Map + summary: Create a TLS policy map + operationId: addTlsPolicyMap + description: >- + Sets the TLS policy for outgoing connections to a destination. + + + Messages: `tls_policy_map_entry_saved`; errors + `tls_policy_map_dest_invalid`, `tls_policy_map_parameter_invalid`, + `tls_policy_map_entry_exists`. requestBody: content: application/json: schema: - example: - parameters: "" - active: "1" - dest: mailcow.tld - policy: encrypt + type: object properties: - parameters: - description: >- - custom parameters you find out more about them - [here](http://www.postfix.org/postconf.5.html#smtp_tls_policy_maps) - type: string - active: - description: 1 for a active user account 0 for a disabled user account - type: number dest: - description: the target domain or email address type: string + description: >- + Destination: a domain, `.example.org` for its subdomains or + a host like `[mail.example.org]:25` policy: - description: the policy + type: string + description: >- + Postfix TLS security level (see + [smtp_tls_policy_maps](https://www.postfix.org/TLS_README.html#client_tls_policy)) enum: - none - may - encrypt - dane - - "'dane" + - dane-only - fingerprint - verify - secure + parameters: type: string - type: object - summary: Create TLS Policy Map + description: Space-separated `name=value` attributes, may be empty + default: "" + active: + type: [boolean, integer, string] + description: 1 = active, 0 = inactive + default: 0 + required: + - dest + - policy + example: + dest: example.com + policy: encrypt + parameters: protocols=>=TLSv1.2 + active: "1" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" /api/v1/add/transport: post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - transport - - add - - active: "1" - destination: example2.org - nexthop: "host:25" - password: supersecurepw - username: testuser - msg: - - relayhost_added - - "" - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} tags: - Routing - description: Using this endpoint you can create Sender-Dependent Transports. - operationId: Create Transport Maps + summary: Create transport maps + operationId: addTransport + description: >- + Routes mail for each destination over a next hop; overrules + sender-dependent transports. Always `smtp:` (TLS when offered, no + SMTPS); addresses ending in `localhost` stay local. `username` and + `password` apply to all entries of the next hop. + + + Messages: `relayhost_added`; errors `transport_dest_exists`, + `invalid_destination`, `next_hop_interferes`, + `invalid_nexthop_authenticated`. requestBody: content: application/json: schema: - example: - active: "1" - destination: example.org - nexthop: "host:25" - password: supersecurepw - username: testuser + type: object properties: - active: - description: 1 for a active transport map 0 for a disabled transport map - type: number destination: type: string + description: >- + Domains, `.example.org` for subdomains, `*` or addresses, + separated by spaces, commas, semicolons or line breaks; + with `is_mx_based` a regular expression for the MX name of + the recipient domain nexthop: type: string - password: - description: the password for the smtp user - type: string + description: "`host`, `host:25`, `[host]:25` or an IP address (bracketed automatically)" username: - description: the username used to authenticate type: string - type: object - summary: Create Transport Maps + description: SMTP user name, empty for no authentication + default: "" + password: + type: string + description: SMTP password + default: "" + is_mx_based: + type: [boolean, integer, string] + description: 1 = `destination` is a regular expression for MX names + default: 0 + active: + type: [boolean, integer, string] + description: 1 = active, 0 = inactive + default: 0 + required: + - destination + - nexthop + example: + destination: example.com, .example.com + nexthop: "[mx.example.com]:25" + username: "" + password: "" + is_mx_based: "0" + active: "1" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" /api/v1/delete/alias: post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - mailbox - - delete - - alias - - id: - - "6" - - "9" - - null - msg: - - alias_removed - - alias@domain.tld - type: success - - log: - - mailbox - - delete - - alias - - id: - - "6" - - "9" - - null - msg: - - alias_removed - - alias2@domain.tld - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} tags: - Aliases - description: You can delete one or more aliases. - operationId: Delete alias + summary: Delete aliases + operationId: deleteAlias + description: >- + Deletes the aliases and the send-as rights granted for their addresses. + Distribution addresses of mailbox groups cannot be deleted here. + + + Messages: `alias_removed`; errors `alias_group_managed`. requestBody: content: application/json: schema: - items: - example: "6" - type: string type: array - summary: Delete alias + description: IDs or addresses of the aliases (a single value works too) + items: + type: [integer, string] + example: + - 12 + - info@example.org + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" /api/v1/delete/api-key: post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - api - - delete - - key - - id: - - "3" - msg: - - api_key_deleted - - provisioning - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} + summary: Delete API keys + description: >- + Deletes API keys. Service keys from mailcow.conf cannot be deleted. + + + Messages: `api_key_deleted`; error `api_key_service_locked`. + operationId: deleteApiKey tags: - API Keys - description: >- - Delete API keys by ID. Service keys from mailcow.conf cannot be - deleted (`api_key_service_locked`). - operationId: Delete API keys requestBody: + required: true content: application/json: schema: - example: - - "3" - properties: - items: - description: contains list of API key IDs you want to delete - type: object - type: object - summary: Delete API keys + type: array + description: IDs of the API keys + items: + type: [integer, string] + example: + - 3 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" /api/v1/delete/app-passwd: post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - app_passwd - - delete - - id: - - "2" - msg: - - app_passwd_removed - - "2" - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} tags: - App Passwords - description: Using this endpoint you can delete a single app password. - operationId: Delete App Password + summary: Delete app passwords + operationId: deleteAppPassword + description: >- + Deletes app passwords by ID. Needs the user ACL `app_passwds`. The + first unknown or foreign ID stops the call. requestBody: + required: true content: application/json: schema: - example: - - "1" - properties: - items: - description: contains list of app passwords you want to delete - type: object - type: object - summary: Delete App Password + type: array + description: App password IDs + items: + type: integer + example: + - 23 + - 24 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" /api/v1/delete/bcc: post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - bcc - - delete - - id: - - "4" - - null - msg: - - bcc_deleted - - "4" - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} tags: - Address Rewriting + summary: Delete BCC maps + operationId: deleteBccMap description: >- - Using this endpoint you can delete a BCC map, for this you have to know - its ID. You can get the ID using the GET method. - operationId: Delete BCC Map + Deletes BCC maps by ID. Same callers as add/bcc. A non-numeric ID stops + the call. + + + Messages: `bcc_deleted`. requestBody: content: application/json: schema: - example: - - "3" - properties: - items: - description: contains list of bcc maps you want to delete - type: object - type: object - summary: Delete BCC Map + type: array + description: IDs of the BCC maps (a single value works too) + items: + type: [integer, string] + example: + - 3 + - 4 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" /api/v1/delete/dkim: post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - dkim - - delete - - domains: - - mailcow.tld - msg: - - dkim_removed - - mailcow.tld - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} + summary: Delete DKIM keys + description: >- + Deletes the DKIM keys of domains. Answers `dkim_removed` also for + domains without a key. + operationId: deleteDkimKeys tags: - DKIM - description: Using this endpoint a existing DKIM Key can be deleted - operationId: Delete DKIM Key requestBody: + required: true content: application/json: schema: - items: - example: - - mailcow.tld - type: string type: array - summary: Delete DKIM Key + description: Domain names + items: + type: string + example: + - example.org + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" /api/v1/delete/domain: post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - mailbox - - delete - - domain - - domain: - - domain.tld - - domain2.tld - - null - msg: - - domain_removed - - domain.tld - type: success - - log: - - mailbox - - delete - - domain - - domain: - - domain.tld - - domain2.tld - - null - msg: - - domain_removed - - domain2.tld - type: success - schema: - type: array - items: - type: object - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - description: OK - headers: {} + summary: Delete domains + description: >- + Deletes domains without mailboxes or resources, with their aliases, + alias domains and settings. Domain admins left without a domain are + deleted too. The DKIM key is kept. + + + Messages: `domain_removed`; error `domain_not_empty`. + operationId: deleteDomain tags: - Domains - description: You can delete one or more domains. - operationId: Delete domain requestBody: + required: true content: application/json: schema: - type: object - example: - - domain.tld - - domain2.tld - properties: - items: - type: array - items: - type: string - summary: Delete domain - /api/v1/delete/domain-admin: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - domain_admin - - delete - - username: - - testadmin - msg: - - domain_admin_removed - - testadmin - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Domain admin - description: Using this endpoint a existing Domain Admin user can be deleted. - operationId: Delete Domain Admin - requestBody: - content: - application/json: - schema: - example: - - testadmin - properties: - items: - description: contains list of usernames of the users you want to delete - type: object - type: object - summary: Delete Domain Admin - /api/v1/delete/domain-policy: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - policy - - delete - - domain - - prefid: - - "1" - - "2" - msg: - - item_deleted - - "1" - type: success - - log: - - policy - - delete - - domain - - prefid: - - "1" - - "2" - msg: - - item_deleted - - "2" - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Domain antispam policies - description: You can delete one o more domain policies. - operationId: Delete domain policy - requestBody: - content: - application/json: - schema: - example: - - "1" - - "2" - properties: - items: - description: contains list of domain policys you want to delete - type: object - type: object - summary: Delete domain policy - /api/v1/delete/fwdhost: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - fwdhost - - delete - - forwardinghost: - - 5.1.76.202 - - "2a00:f820:417::202" - msg: - - forwarding_host_removed - - 5.1.76.202 - type: success - - log: - - fwdhost - - delete - - forwardinghost: - - 5.1.76.202 - - "2a00:f820:417::202" - msg: - - forwarding_host_removed - - "2a00:f820:417::202" - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Fordwarding Hosts - description: >- - Using this endpoint you can delete a forwarding host, in order to do so - you need to know the IP of the host. - operationId: Delete Forward Host - requestBody: - content: - application/json: - schema: - example: - - 5.1.76.202 - - "2a00:f820:417::202" - properties: - ip: - description: contains the ip of the fowarding host you want to delete - type: string - type: object - summary: Delete Forward Host - /api/v1/delete/mailbox: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - mailbox - - delete - - mailbox - - username: - - info@domain.tld - - sales@domain.tld - - null - msg: - - mailbox_removed - - info@domain.tld - type: success - - log: - - mailbox - - delete - - mailbox - - username: - - info@domain.tld - - sales@domain.tld - - null - msg: - - mailbox_removed - - sales@domain.tld - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Mailboxes - description: You can delete one or more mailboxes. - operationId: Delete mailbox - requestBody: - content: - application/json: - schema: - example: - - info@domain.tld - - sales@domain.tld - properties: - items: - description: contains list of mailboxes you want to delete - type: object - type: object - summary: Delete mailbox - /api/v1/delete/mailbox-group: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - mailbox_group - - delete - - group - - id: - - "7" - msg: - - group_removed - - Sales - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - warning - - error - type: string - type: object - description: OK - headers: {} - tags: - - Groups - description: >- - Delete groups by ID. Members keep their settings; their group alias and - send-as rights of the group are removed. - operationId: Delete groups - requestBody: - content: - application/json: - schema: - example: - - "7" - properties: - items: - description: contains list of group IDs you want to delete - type: object - type: object - summary: Delete groups - /api/v1/delete/identity-link: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - identity_provider - - delete - - link - - - alice@example.org - msg: - - iam_link_removed - - alice@example.org - type: success - description: OK - headers: {} - tags: - - Identity Provider - description: >- - Removes the link between mailboxes and their Identity Provider users (admins only). The mailbox is - linked again by email on the next sync run or login, e.g. after its address was given to another - Identity Provider user. - operationId: Delete identity links - requestBody: - content: - application/json: - schema: - example: - - alice@example.org + type: array + description: Domain names items: type: string + example: + - example.org + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/domain-admin: + post: + summary: Delete domain administrators + description: >- + Deletes domain administrators with their ACLs, two-factor + authentication and FIDO2 keys. + + + Messages: `domain_admin_removed`; error `username_invalid`. + operationId: deleteDomainAdmin + tags: + - Domain admin + requestBody: + required: true + content: + application/json: + schema: type: array - summary: Delete identity links + description: Usernames of the domain administrators + items: + type: string + example: + - domainadmin1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/domain-policy: + post: + summary: Delete entries of domain allow and deny lists + description: >- + Deletes allow and deny list entries of domains by `prefid`. Needs the + ACL `spam_policy`. Unknown IDs and entries of mailboxes answer + `access_denied`. + + + Messages: `item_deleted`. + operationId: deleteDomainPolicy + tags: + - Domain antispam policies + requestBody: + required: true + content: + application/json: + schema: + type: array + description: Entry IDs (`prefid`) + items: + type: [integer, string] + example: + - 12 + - 13 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/fwdhost: + post: + tags: + - Forwarding Hosts + summary: Delete forwarding hosts + operationId: deleteForwardingHost + description: >- + Removes forwarding hosts, answering `forwarding_host_removed` also for + hosts that do not exist. + requestBody: + content: + application/json: + schema: + type: array + description: Hosts as get/fwdhost lists them (`host`; a single value works too) + items: + type: string + example: + - 192.0.2.25 + - "2001:db8::25" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/fwdhost/{host}: + get: + tags: + - Forwarding Hosts + summary: Get forwarding hosts + operationId: getForwardingHosts + description: >- + `all` lists the forwarding hosts; any logged-in role may read a single + address. Networks cannot be read one by one (the slash ends the path). + `{}` if there is none. + parameters: + - name: host + in: path + required: true + description: "`all` or the address of a forwarding host" + schema: + type: string + example: all + responses: + "200": + description: The list of forwarding hosts (`all`) or one host + content: + application/json: + schema: + anyOf: + - type: array + items: + $ref: "#/components/schemas/ForwardingHost" + - $ref: "#/components/schemas/ForwardingHost" + examples: + all: + summary: get/fwdhost/all + value: + - host: 192.0.2.25 + source: relay.example.com + keep_spam: "no" + - host: "2001:db8::25" + source: relay.example.com + keep_spam: "no" + - host: 198.51.100.0/24 + source: 198.51.100.0/24 + keep_spam: "yes" + one: + summary: get/fwdhost/192.0.2.25 + value: + host: 192.0.2.25 + source: relay.example.com + keep_spam: "no" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/delete/mailbox: + post: + tags: + - Mailboxes + summary: Delete mailboxes + operationId: deleteMailbox + description: >- + Deletes mailboxes with all their data, including aliases that point + only to them. Also for domain admins; a mailbox user can delete its own + mailbox. + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/MailboxItems" + example: + - john.doe@example.org + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/mailbox-group: + post: + summary: Delete mailbox groups + description: >- + Deletes groups with their address, send-as rights and grants. Members + keep their mailbox settings; another group's template may become + effective. Same permissions as edit. + + + Messages: `group_removed`. + operationId: deleteMailboxGroups + tags: + - Groups + requestBody: + content: + application/json: + schema: + type: array + description: Group ids + items: + type: + - integer + - string + example: + - 7 + - 8 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/identity-link: + post: + summary: Remove identity links + description: >- + Removes the links of mailboxes to their Identity Provider users, e.g. + after an address moved to another user; the next sync run or login + links them again by email. Answers success also for mailboxes without a + link. + + + Messages: `iam_link_removed`. + operationId: deleteIdentityLinks + tags: + - Identity Provider + requestBody: + content: + application/json: + schema: + type: array + description: Mailboxes + items: + type: string + example: + - alice@example.org + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" /api/v1/delete/mailq: post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - msg: Task completed - type: success - description: OK - headers: {} + summary: Delete queued messages + description: >- + Deletes messages from the Postfix queue. To empty the whole queue use + `super_delete` of `POST /api/v1/edit/mailq`. + + + Messages: `queue_command_success`; errors `Error: command failed: ...`, + `unknown`. + operationId: deleteQueuedMessages tags: - Queue Manager - description: >- - Using this API you can delete the current mail queue. This will delete - all mails in it. - - This API uses the command: `postsuper -d` - operationId: Delete Queue requestBody: content: application/json: schema: - example: - action: super_delete - properties: - action: - description: use super_delete to delete the mail queue - type: string - type: object - summary: Delete Queue + description: Queue IDs (a single ID works too) + oneOf: + - type: array + items: + type: string + - type: string + example: + - B98C6260CA1 + - 4C1E8260D02 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" /api/v1/delete/oauth2-client: post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - oauth2 - - delete - - client - - id: - - "1" - msg: - - items_deleted - - "1" - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} + summary: Delete OAuth2 clients + description: >- + Deletes OAuth2 clients but not their tokens; revoke these first with + `revoke_tokens` of `edit/oauth2-client`. + + + Messages: `items_deleted`. + operationId: deleteOAuth2Client tags: - oAuth Clients - description: >- - Using this endpoint you can delete a oAuth client, for this you have to - know its ID. You can get the ID using the GET method. - operationId: Delete oAuth Client requestBody: + required: true content: application/json: schema: - example: - - "3" - properties: - items: - description: contains list of oAuth clients you want to delete - type: object - type: object - summary: Delete oAuth Client + type: array + description: IDs of the clients + items: + type: [integer, string] + example: + - 1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" /api/v1/delete/qitem: post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - quarantine - - delete - - id: - - "33" - msg: - - item_deleted - - "33" - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} + summary: Delete quarantined messages + description: >- + Deletes quarantine items without releasing or learning them. Domain + admins and mailbox users may delete their own items if the quarantine + module is allowed for them. Admins get `item_deleted` even for unknown + IDs. + operationId: deleteQuarantineItems tags: - Quarantine - description: >- - Using this endpoint you can delete a email from quarantine, for this you - have to know its ID. You can get the ID using the GET method. - operationId: Delete mails in Quarantine requestBody: content: application/json: schema: - example: - - "33" - properties: - items: - description: contains list of emails you want to delete - type: object - type: object - summary: Delete mails in Quarantine + description: IDs of quarantine items (a single ID works too) + oneOf: + - type: array + items: + type: [integer, string] + - type: [integer, string] + example: + - "33" + - "34" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" /api/v1/edit/qitem: post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - release: - value: - - log: - - quarantine - - edit - - id: - - "33" - action: release - msg: - - item_released - - "33" - type: success - learnham: - value: - - log: - - quarantine - - edit - - id: - - "34" - action: learnham - msg: - - item_learned - - "34" - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} + summary: Release or learn quarantined messages + description: >- + By `attr.action`: `release` and `learnham` both deliver the message, + delete the item and learn it as ham; `learnspam` deletes it and learns + it as spam. Domain + admins and mailbox users may act on their own items if the quarantine + module is allowed for them. A failed delivery stops the remaining + items. + + + Messages: `item_released`, `learned_ham`, `qlearn_spam`; errors + `release_send_failed`, `ham_learn_error`, `spam_learn_error`. + operationId: editQuarantineItems tags: - Quarantine - description: >- - Using this endpoint you can perform actions on quarantine items. It is possible to release - emails from quarantine into to the inbox, or learn them as ham to improve Rspamd filtering. - You must provide the quarantine item IDs. You can get the IDs using the GET method. - operationId: Edit mails in Quarantine requestBody: content: application/json: schema: - example: - items: - - "33" - - "34" - attr: - action: release + type: object properties: items: - description: contains list of quarantine item IDs to release or learn as ham - type: object + description: ID or list of IDs of quarantine items + oneOf: + - type: array + items: + type: [integer, string] + - type: [integer, string] attr: - description: attributes for the action type: object properties: action: @@ -3121,4874 +5996,8437 @@ paths: enum: - release - learnham - description: "release - return email to inbox; learnham - learn as ham to improve filtering" - type: object - summary: Edit mails in Quarantine + - learnspam + required: + - action + required: + - items + - attr + example: + items: + - "33" + - "34" + attr: + action: release + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" /api/v1/delete/recipient_map: post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - recipient_map - - delete - - id: - - "1" - - null - msg: - - recipient_map_entry_deleted - - "1" - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} tags: - Address Rewriting + summary: Delete recipient maps + operationId: deleteRecipientMap description: >- - Using this endpoint you can delete a recipient map, for this you have to - know its ID. You can get the ID using the GET method. - operationId: Delete Recipient Map + Deletes recipient maps by ID. Answers `recipient_map_entry_deleted` + also for IDs that do not exist; a non-numeric ID stops the call. requestBody: content: application/json: schema: - example: - - "1" - properties: - items: - description: contains list of recipient maps you want to delete - type: object - type: object - summary: Delete Recipient Map - /api/v1/delete/relayhost: - post: + type: array + description: IDs of the recipient maps (a single value works too) + items: + type: [integer, string] + example: + - 1 responses: + "200": + $ref: "#/components/responses/WriteResult" "401": $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - relayhost - - delete - - id: - - "1" - msg: - - relayhost_removed - - "1" - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/relayhost: + post: tags: - Routing + summary: Delete sender-dependent transports + operationId: deleteRelayhost description: >- - Using this endpoint you can delete a Sender-Dependent Transport, for - this you have to know its ID. You can get the ID using the GET method. - operationId: Delete Sender-Dependent Transports + Deletes sender-dependent transports by ID, answering + `relayhost_removed` also for IDs that do not exist. Domains that used + one fall back to the default route; the `relayhost` of mailboxes is not + reset. requestBody: content: application/json: schema: - example: - - "1" + type: array + description: IDs of the sender-dependent transports (a single value works too) + items: + type: [integer, string] + example: + - 1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/resource: + post: + tags: + - Resources + summary: Delete resources + operationId: deleteResource + description: >- + Deletes resources and their SOGo data, also for domain admins. + requestBody: + required: true + content: + application/json: + schema: + type: array + description: Resource addresses + items: + type: string + example: + - MeetingRoom1@example.org + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/syncjob: + post: + summary: Delete sync jobs + description: >- + Deletes sync jobs. Needs the `syncjobs` ACL and access to the mailbox of + each job. The OAuth2 token of the remote account is deleted when no + other job uses it. + + + Messages: `deleted_syncjob`. + operationId: deleteSyncJobs + tags: + - Sync jobs + requestBody: + content: + application/json: + schema: + type: array + description: Job ids + items: + type: + - integer + - string + example: + - 12 + - 13 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/syncjob_source: + post: + summary: Delete sync sources + description: >- + Deletes sync sources that no job uses. Needs the `syncjobs` ACL and edit + rights on the source. + + + Messages: `imapsync_source_deleted`; errors `imapsync_source_in_use`. + operationId: deleteSyncJobSources + tags: + - Sync jobs + requestBody: + content: + application/json: + schema: + type: array + description: Source ids + items: + type: + - integer + - string + example: + - 3 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/tls-policy-map: + post: + tags: + - Outgoing TLS Policy Map Overrides + summary: Delete TLS policy maps + operationId: deleteTlsPolicyMap + description: >- + Deletes TLS policy maps by ID. Answers `tls_policy_map_entry_deleted` + also for IDs that do not exist; a non-numeric ID stops the call. + requestBody: + content: + application/json: + schema: + type: array + description: IDs of the TLS policy maps (a single value works too) + items: + type: [integer, string] + example: + - 2 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/transport: + post: + tags: + - Routing + summary: Delete transport maps + operationId: deleteTransport + description: >- + Deletes transport maps by ID, answering `relayhost_removed` also for + IDs that do not exist. + requestBody: + content: + application/json: + schema: + type: array + description: IDs of the transport maps (a single value works too) + items: + type: [integer, string] + example: + - 4 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/mailbox/tag/{mailbox}: + post: + tags: + - Mailboxes + summary: Remove tags from a mailbox + operationId: deleteMailboxTags + description: >- + Removes tags from the mailbox, also for domain admins. Answers "Cannot + delete item" when no tag was sent. + parameters: + - name: mailbox + in: path + required: true + description: Mailbox address + schema: + type: string + example: john.doe@example.org + requestBody: + required: true + content: + application/json: + schema: + type: array + description: Tag names + items: + type: string + example: + - sales + - trainee + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/domain/tag/{domain}: + post: + summary: Remove tags of a domain + description: >- + Removes tags from a domain. Answers `domain_modified` also for tags the + domain did not have. + operationId: deleteDomainTags + tags: + - Domains + parameters: + - name: domain + in: path + required: true + description: Domain name + schema: + type: string + example: example.org + requestBody: + required: true + content: + application/json: + schema: + type: array + description: Tag names + items: + type: string + example: + - customer + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/alias: + post: + tags: + - Aliases + summary: Update aliases + operationId: editAlias + description: >- + Changes the aliases in `items`; fields not sent keep their value, + except the `goto_*` flags, which are reset to 0. An alias that discards + or learns its mail therefore needs its `goto_*` flag in every edit, + else nothing is saved while the answer still says `alias_modified`. + Invalid destinations are dropped; if none remains, nothing is saved. + + + Messages: `alias_modified`; errors `alias_invalid`, + `alias_group_managed`, `goto_invalid`, `is_not_primary_alias`. + requestBody: + content: + application/json: + schema: + type: object + properties: + items: + description: IDs or addresses of the aliases, a single value or a list + oneOf: + - type: array + items: + type: [integer, string] + - type: [integer, string] + attr: + type: object + properties: + address: + type: string + description: New alias address, `@example.org` for a catch-all + goto: + type: string + description: >- + New destination addresses, replacing the current ones; + ignored if a `goto_*` flag is 1 + goto_null: + type: [boolean, integer, string] + description: 1 = discard the mail silently + default: 0 + goto_spam: + type: [boolean, integer, string] + description: 1 = learn the mail as spam + default: 0 + goto_ham: + type: [boolean, integer, string] + description: 1 = learn the mail as ham + default: 0 + active: + type: [boolean, integer, string] + description: 1 = active, 0 = inactive + sogo_visible: + type: [boolean, integer, string] + description: 1 = selectable sender in SOGo + internal: + type: [boolean, integer, string] + description: 1 = only reachable from its own domain and its alias domains + sender_allowed: + type: [boolean, integer, string] + description: 1 = the destination mailboxes may send as this alias + public_comment: + type: string + description: Comment shown to the users + private_comment: + type: string + description: Comment for administrators + expand_alias: + type: [boolean, integer] + description: >- + 1 = only create the missing copies of the alias in the + alias domains of its domain; other attributes are + ignored + required: + - items + - attr + example: + items: + - 12 + attr: + goto: anna@example.org,ben@example.org,carla@example.org + active: "1" + public_comment: Sales team + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/api-key: + post: + summary: Edit API keys + description: >- + Changes API keys; fields not sent keep their value. `regen_key` sets a + new random value, which locks out clients using the old one. Service + keys from mailcow.conf cannot be changed. + + + Messages: `api_key_modified`; errors `api_key_service_locked`, + `api_key_network_invalid`, `ip_list_empty`. + operationId: editApiKey + tags: + - API Keys + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + items: + description: ID of the API key, or a list of IDs + oneOf: + - type: [integer, string] + - type: array + items: + type: [integer, string] + attr: + allOf: + - $ref: "#/components/schemas/ApiKeyAttributes" + - type: object + properties: + regen_key: + type: [integer, string, boolean] + description: 1 = generate a new key value + default: 0 + required: + - items + - attr + example: + items: + - 3 + attr: + allow_from: + - 192.0.2.10 + - 198.51.100.0/24 + regen_key: 1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/domain: + post: + summary: Edit domains + description: >- + Changes domains. Quotas are in MiB. Fields not sent keep their value, + so do `aliases`, `maxquota` and `quota` sent as 0 or empty. `tags` are + added; a tag the domain has already ends the call without an answer + after saving the rest. Domain admins can change only `description`, + `gal` and `tags`. + + + Messages: `domain_modified`; errors `domain_invalid`, + `max_quota_in_use`, `mailboxes_in_use`, `aliases_in_use`. + operationId: editDomain + tags: + - Domains + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + description: Domain name or list of domain names + oneOf: + - type: string + - type: array + items: + type: string + attr: + type: object + properties: + description: + type: string + description: Description + aliases: + type: [integer, string] + description: Max. number of aliases + mailboxes: + type: [integer, string] + description: Max. number of mailboxes + defquota: + type: [integer, string] + description: Default quota of new mailboxes in MiB + maxquota: + type: [integer, string] + description: Max. quota per mailbox in MiB + quota: + type: [integer, string] + description: Quota of the whole domain in MiB + active: + type: [integer, string] + enum: [0, 1, "0", "1"] + description: Domain active + gal: + type: [integer, string] + enum: [0, 1, "0", "1"] + description: Global address list in SOGo + backupmx: + type: [integer, string] + enum: [0, 1, "0", "1"] + description: Relay this domain (backup MX) + relay_all_recipients: + type: [integer, string] + enum: [0, 1, "0", "1"] + description: Relay all recipients; 1 sets `backupmx` + relay_unknown_only: + type: [integer, string] + enum: [0, 1, "0", "1"] + description: >- + Relay only recipients without a local mailbox; 1 sets + `backupmx` and `relay_all_recipients` + relayhost: + type: [integer, string] + description: >- + ID of the sender-dependent transport (get/relayhost/all) + the domain sends through, 0 = none + tags: + type: array + items: + type: string + description: Tags to add + example: + items: + - example.org + attr: + description: Example Org + aliases: 400 + mailboxes: 20 + defquota: 3072 + maxquota: 10240 + quota: 51200 + active: 1 + gal: 1 + backupmx: 0 + relay_all_recipients: 0 + relay_unknown_only: 0 + relayhost: 0 + tags: + - premium + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/domain/footer: + post: + summary: Set the domain-wide footer + description: >- + Sets the footer of all outgoing mail of the domains; fields not sent are + emptied. Placeholders: `{= auth_user =}`, `{= from_user =}`, + `{= from_name =}`, `{= from_addr =}`, `{= from_domain =}` and custom + mailbox attributes. + + + Messages: `domain_footer_modified`; error `domain_invalid`. + operationId: editDomainFooter + tags: + - Domains + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + description: Domain name or list of domain names + oneOf: + - type: string + - type: array + items: + type: string + attr: + type: object + properties: + html: + type: string + default: "" + description: HTML footer + plain: + type: string + default: "" + description: Plain text footer + skip_replies: + type: [integer, string] + enum: [0, 1, "0", "1"] + default: 0 + description: No footer in replies + exclude: + description: >- + Mailboxes, aliases and alias domains without footer; + unknown entries are skipped (`username_invalid`) + oneOf: + - type: string + - type: array + items: + type: string + example: + items: + - example.org + attr: + html: "

Example Org · {= from_name =}

" + plain: "Example Org - {= from_name =}" + skip_replies: 1 + exclude: + - noreply@example.org + - example.com + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/fail2ban: + post: + summary: Edit Fail2Ban settings, bans and filters + description: >- + By `attr.action`: `unban`, `whitelist` and `blacklist` unban, allowlist + or deny the networks in `items`; `unban-all` lifts all active bans; + `edit-regex` replaces the regex filters with `attr.regex`, + `reset-regex` restores the defaults. Without `action` the settings are + saved: fields not sent keep their value, but `ban_time_increment` and + `manage_external` become 0, and values out of range are clamped. The + same happens for `unban`, `whitelist`, `blacklist` or `reset-regex` + without `items`. + + + Messages: `f2b_modified`, `object_modified`; errors + `network_host_invalid`, `reset_f2b_regex`. + operationId: editFail2Ban + tags: + - Fail2Ban + requestBody: + content: + application/json: + schema: + type: object + properties: + items: + description: Networks or IPs for `unban`, `whitelist`, `blacklist` (single value or list) + oneOf: + - type: array + items: + type: string + - type: string + attr: + type: object + properties: + action: + type: string + enum: + - unban + - whitelist + - blacklist + - unban-all + - edit-regex + - reset-regex + regex: + type: array + items: + type: string + description: "`edit-regex`: the regex filters; the first group must match the IP" + ban_time: + type: [integer, string] + description: Ban time in seconds (min. 60) + ban_time_increment: + type: [boolean, integer, string] + description: 1 = the ban time grows with every ban of a network; not sent = 0 + max_ban_time: + type: [integer, string] + description: Maximum ban time in seconds (min. 60) + max_attempts: + type: [integer, string] + description: Failed logins within `retry_window` that lead to a ban (min. 1) + retry_window: + type: [integer, string] + description: Window in seconds for `max_attempts` (min. 1) + netban_ipv4: + type: [integer, string] + description: IPv4 prefix length that is banned (8-32) + netban_ipv6: + type: [integer, string] + description: IPv6 prefix length that is banned (8-128) + whitelist: + type: string + description: Allowlist, networks or host names separated by space, comma, semicolon or newline; replaces the list + blacklist: + type: string + description: Denylist, networks separated by space, comma, semicolon or newline; replaces the list + manage_external: + type: [boolean, integer, string] + description: 1 = netfilter sets no rules, block externally with the banlist; not sent = 0 + required: + - attr + examples: + settings: + summary: Save the settings + value: + items: [] + attr: + ban_time: "1800" + ban_time_increment: "1" + max_ban_time: "86400" + max_attempts: "10" + retry_window: "600" + netban_ipv4: "32" + netban_ipv6: "128" + whitelist: |- + 192.0.2.0/24 + mail.example.org + blacklist: 198.51.100.66/32 + manage_external: "0" + unban: + summary: Unban a network + value: + items: + - 203.0.113.7/32 + attr: + action: unban + regex: + summary: Replace the regex filters + value: + items: + - self + attr: + action: edit-regex + regex: + - "^mailcow UI: Invalid password for .+ by ([0-9a-f\\.:]+)$" + - "^Rspamd UI: Invalid password by ([0-9a-f\\.:]+)$" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/mailbox: + post: + tags: + - Mailboxes + summary: Update mailboxes + operationId: editMailbox + description: >- + Changes mailboxes; fields not sent keep their value. Also for domain + admins; without the matching ACL their changes to `sogo_access`, + protocols and `relayhost` are ignored silently and + `extended_sender_acl` is refused. Quota 0 (unlimited) needs the + `unlimited_quota` ACL. + + + Messages: `mailbox_modified`; errors `mailbox_quota_exceeded`, + `password_complexity`, `sender_acl_invalid`, + `extended_sender_acl_denied`. + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + $ref: "#/components/schemas/MailboxItems" + attr: + $ref: "#/components/schemas/MailboxEdit" + example: + items: + - john.doe@example.org + attr: + name: John Doe + quota: 5120 + active: 1 + protocol_access: + - imap + - smtp + - sieve + - dav + sender_acl: + - sales@example.org + - "@example.com" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/mailbox/custom-attribute: + post: + tags: + - Mailboxes + summary: Set custom attributes of mailboxes + operationId: editMailboxCustomAttributes + description: >- + Replaces the custom attributes (free key/value pairs) of the mailboxes: + `attribute[i]` gets `value[i]`, all others are removed. Also for domain + admins. + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + $ref: "#/components/schemas/MailboxItems" + attr: + type: object + properties: + attribute: + description: Attribute names (a single string is one name) + oneOf: + - type: string + - type: array + items: + type: string + value: + description: Values, in the order of `attribute` + oneOf: + - type: string + - type: array + items: + type: string + example: + items: + - john.doe@example.org + attr: + attribute: + - department + - employee_id + value: + - Sales + - "4711" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/mailbox-group: + post: + summary: Update mailbox groups + description: >- + Changes groups; fields not sent keep their value. The domain cannot be + changed, and members from the identity sync cannot be removed here. + Domain admins need the `mailbox_groups` ACL and cannot edit groups with + send-as addresses or grants outside their domains. + + + Messages: `group_modified`; errors `group_member_idp` and those of add. + operationId: editMailboxGroups + tags: + - Groups + requestBody: + content: + application/json: + schema: + type: object + required: + - items + - attr properties: items: description: >- - contains list of Sender-Dependent Transport you want to - delete - type: object - type: object - summary: Delete Sender-Dependent Transports - /api/v1/delete/resource: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - mailbox - - delete - - resource - - name: - - test@mailcow.tld - - null - msg: - - resource_removed - - test@mailcow.tld - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Resources - description: >- - Using this endpoint you can delete a Resources, for this you have to - know its ID. You can get the ID using the GET method. - operationId: Delete Resources - requestBody: - content: - application/json: - schema: - example: - - test@mailcow.tld - properties: - items: - description: contains list of Resources you want to delete - type: object - type: object - summary: Delete Resources - /api/v1/delete/syncjob: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - log: - - entity - - action - - object - msg: - - message - - entity name - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Sync jobs - description: You can delete one or more sync jobs. - operationId: Delete sync job - requestBody: - content: - application/json: - schema: - example: - - "6" - - "9" - properties: - items: - description: contains list of aliases you want to delete - type: object - type: object - summary: Delete sync job - /api/v1/delete/syncjob_source: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - syncjob - - delete - - source - - id: - - "3" - msg: - - imapsync_source_deleted - - Example import - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Sync jobs - description: >- - Delete one or more sync job sources by id. Sources still referenced by - a sync job cannot be deleted. Delete or - repoint the dependent jobs first. - operationId: Delete sync job source - summary: Delete sync job source - requestBody: - content: - application/json: - schema: - example: - - "3" + Group ids, a list or a single id. An `id` inside `attr` + replaces `items`. + oneOf: + - type: array + items: + type: + - integer + - string + - type: + - integer + - string + attr: + allOf: + - $ref: "#/components/schemas/MailboxGroupAttributes" + - type: object + properties: + reapply_template: + type: + - boolean + - integer + - string + description: >- + Admins only: apply the effective templates to all + members again, also when nothing changed + default: 0 + example: items: - type: string - type: array - /api/v1/delete/tls-policy-map: - post: + - 7 + attr: + add_members: + - carol@example.org + remove_members: + - bob@example.org + sogo_grants: + - owner: shared@example.org + type: Calendar + folder: personal + access: write + subscribe: 1 responses: + "200": + $ref: "#/components/responses/WriteResult" "401": $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - tls_policy_maps - - delete - - id: - - "1" - - null - msg: - - tls_policy_map_entry_deleted - - "1" - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Outgoing TLS Policy Map Overrides + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/identity-provider-sync: + post: + summary: Request an identity sync run description: >- - Using this endpoint you can delete a TLS Policy Map, for this you have - to know its ID. You can get the ID using the GET method. - operationId: Delete TLS Policy Map + Queues an identity sync run (Keycloak and LDAP) that starts within a + minute, see `GET /api/v1/get/identity-provider/sync-status`. An + identical pending request is reused. + + + Messages: `iam_sync_requested`; errors `iam_sync_mode_invalid`, + `iam_sync_unavailable`. + operationId: requestIdentitySync + tags: + - Identity Provider requestBody: content: application/json: schema: - example: - - "3" + type: object + required: + - attr properties: items: - description: contains list of tls policy maps you want to delete + description: Not used + attr: type: object - type: object - summary: Delete TLS Policy Map - /api/v1/delete/transport: - post: + properties: + mode: + type: string + description: >- + `preview` lists the changes without applying them, + `run` applies them, `force` applies them without the + change limit (`offboarding_limit`) + enum: + - preview + - run + - force + default: run + example: + attr: + mode: preview responses: + "200": + $ref: "#/components/responses/WriteResult" "401": $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - transport - - delete - - id: - - "1" - msg: - - relayhost_removed - - "1" - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Routing + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/mailq: + post: + summary: Act on the mail queue description: >- - Using this endpoint you can delete a Transport Maps, for this you have - to know its ID. You can get the ID using the GET method. - operationId: Delete Transport Maps + Runs a Postfix queue command. `hold`, `unhold` and `deliver` act on the + queue IDs in `items` and do nothing without them; `flush` retries the + whole queue, `super_delete` deletes every queued message. + + + Messages: `queue_command_success`; errors `Error: command failed: ...`, + `unknown`. + operationId: editMailQueue + tags: + - Queue Manager requestBody: content: application/json: schema: - example: - - "1" + type: object properties: items: - description: contains list of transport maps you want to delete + description: Queue ID or list of queue IDs (for `hold`, `unhold`, `deliver`) + oneOf: + - type: array + items: + type: string + - type: string + attr: type: object - type: object - summary: Delete Transport Maps - "/api/v1/delete/mailbox/tag/{mailbox}": - post: - parameters: - - description: name of mailbox - in: path - name: mailbox - example: info@domain.tld - required: true - schema: - type: string + properties: + action: + type: string + enum: + - hold + - unhold + - deliver + - flush + - super_delete + required: + - action + required: + - attr + examples: + hold: + summary: Hold two messages + value: + items: + - B98C6260CA1 + - 4C1E8260D02 + attr: + action: hold + flush: + summary: Flush the whole queue + value: + items: [] + attr: + action: flush responses: + "200": + $ref: "#/components/responses/WriteResult" "401": $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/pushover: + post: + tags: + - Mailbox user settings + summary: Set the Pushover notifications of mailboxes + operationId: editPushover + description: >- + Saves the Pushover settings (push notification on new mail) of the + mailboxes; `delete: "true"` removes them. Needs the user ACL + `pushover`; domain admins need their own ACL `pushover`. `key` and + `token` are required the first time; later, empty fields keep their + value. + + + Messages: `pushover_settings_edited`; errors `pushover_key`, + `pushover_token`. + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + $ref: "#/components/schemas/MailboxItems" + attr: + type: object + properties: + key: + type: string + description: Pushover user key, 30 letters and digits + token: + type: string + description: Pushover application token, 30 letters and digits + active: + type: [integer, string] + enum: [0, 1, "0", "1"] + title: + type: string + description: Title of the notification (default "Mail") + text: + type: string + description: Text of the notification + senders: + type: string + description: Only notify for these senders (separated by comma, space or semicolon) + senders_regex: + type: string + description: Only notify for senders matching this regular expression + evaluate_x_prio: + type: [integer, string] + enum: [0, 1, "0", "1"] + description: 1 sends high-priority mail as high-priority notification (0 when not sent) + only_x_prio: + type: [integer, string] + enum: [0, 1, "0", "1"] + description: 1 notifies for high-priority mails only (0 when not sent) + sound: + type: string + description: Pushover sound name (empty when not sent) + delete: + type: string + enum: + - "true" + description: '"true" removes the Pushover settings, other fields are ignored' + example: + items: + - john.doe@example.org + attr: + key: uQiRzpo4DXghDmr9QzzfQu27cmVRsG + token: azGDORePK8gMaC0QOYAMyEEuzJnyUi + active: 1 + title: New mail + text: You've got mail + senders: boss@example.org + evaluate_x_prio: 1 + only_x_prio: 0 + sound: pushover + responses: "200": - content: - application/json: - examples: - response: - value: - - log: - - mailbox - - delete - - tags_mailbox - - tags: - - tag1 - - tag2 - mailbox: info@domain.tld - - null - msg: - - mailbox_modified - - info@domain.tld - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/quarantine_notification: + post: + tags: + - Quarantine + summary: Set the quarantine notification interval of mailboxes + operationId: editQuarantineNotification + description: >- + How often the mailbox user gets a summary of quarantined mail. Needs + the user ACL `quarantine_notification`; a mailbox user may change only + its own. An invalid value answers `access_denied`. + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + $ref: "#/components/schemas/MailboxItems" + attr: + type: object + required: + - quarantine_notification + properties: + quarantine_notification: + type: string + enum: + - never + - hourly + - daily + - weekly + example: + items: + - john.doe@example.org + attr: + quarantine_notification: daily + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/syncjob: + post: + summary: Update sync jobs + description: >- + Changes sync jobs; fields not sent keep their value, an empty `user1` or + `password1` keeps the stored one. The local mailbox cannot be changed. + Needs the `syncjobs` ACL and access to the mailbox of each job. + + + Messages: `mailbox_modified`; errors as for add. + operationId: editSyncJobs + tags: + - Sync jobs + requestBody: + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + description: >- + Job ids, a list or a single id. An `id` inside `attr` + replaces `items`. + oneOf: + - type: array + items: + type: + - integer + - string + - type: + - integer + - string + attr: + allOf: + - $ref: "#/components/schemas/SyncJobAttributes" + - type: object + properties: + last_run: + description: Any value except null resets the last run time (the job is due again) + success: + description: Any value except null resets the result of the last run + prio: + type: + - integer + - string + description: >- + Admins only: queue priority, higher runs first (see + `edit/syncjob/run_next`) + example: + items: + - 12 + - 13 + attr: + active: 0 + mins_interval: 60 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/syncjob/run_next: + post: + summary: Run sync jobs next + description: >- + Moves sync jobs to the front of the queue so the runner starts them + next; their `last_run` and `success` are cleared. + + + Messages: `imapsync_run_next_done`; errors `imapsync_job_running`. + operationId: runSyncJobsNext + tags: + - Sync jobs + requestBody: + content: + application/json: + schema: + type: object + required: + - items + properties: + items: + description: Job ids + type: array + items: + type: + - integer + - string + attr: + description: Not used + type: object + example: + items: + - 12 + attr: {} + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/syncjob_source: + post: + summary: Update sync sources + description: >- + Changes sync sources; fields not sent keep their value, an empty + `oauth_client_secret` keeps the stored one. Needs the `syncjobs` ACL and + edit rights: own sources, for domain admins also those of their + mailboxes. Changing the server or OAuth2 client drops stored tokens and, + like turning off `verify_cert`, needs access to every mailbox whose jobs + use the source. + + + Messages: `imapsync_source_modified`, + `imapsync_source_token_refresh_failed`; errors + `imapsync_source_used_by_others` and those of add. + operationId: editSyncJobSources + tags: + - Sync jobs + requestBody: + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + description: >- + Source ids, a list or a single id. An `id` inside `attr` + replaces `items`. + oneOf: + - type: array + items: + type: + - integer + - string + - type: + - integer + - string + attr: + $ref: "#/components/schemas/SyncJobSourceAttributes" + example: + items: + - 3 + attr: + description: Migration finished in December + scope: user + users: + - alice@example.org + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/syncjob_source/refresh_token: + post: + summary: Refresh the token of a sync source + description: >- + Fetches a new OAuth2 token for a client_credentials source now; tokens + are otherwise refreshed before they expire. Needs the `syncjobs` ACL and + edit rights on the source. + + + Messages: `imapsync_source_token_refreshed`; errors + `imapsync_source_refresh_unsupported`, + `imapsync_source_token_refresh_failed`. + operationId: refreshSyncJobSourceToken + tags: + - Sync jobs + requestBody: + content: + application/json: + schema: + type: object + required: + - items + properties: + items: + description: Source id (the first entry is used) + type: array + items: + type: + - integer + - string + attr: + description: Not used + type: object + example: + items: + - 5 + attr: {} + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/imapsync_settings: + post: + summary: Update global sync job settings + description: >- + Sets how many sync jobs run at the same time and the bandwidth limit of + each sync job process; a lower `maxbytespersecond` of a job still + applies. + + + Messages: `max_parallel_saved`; errors `imapsync_max_parallel_invalid`, + `imapsync_max_kb_per_second_invalid`. + operationId: editSyncJobSettings + tags: + - Sync jobs + requestBody: + content: + application/json: + schema: + type: object + required: + - attr + properties: + items: + description: Not used + attr: + type: object + required: + - max_parallel + properties: + max_parallel: + type: + - integer + - string + description: Sync jobs running at the same time, 1-32 + minimum: 1 + maximum: 32 + max_kb_per_second: + type: + - integer + - string + description: Bandwidth limit per sync job process in KB/s; 0, empty or not sent = unlimited + default: 0 + minimum: 0 + maximum: 10485760 + example: + attr: + max_parallel: 4 + max_kb_per_second: 2000 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/user-acl: + post: tags: - Mailboxes - description: You can delete one or more mailbox tags. - operationId: Delete mailbox tags + summary: Set the ACL of mailboxes + operationId: editUserAcl + description: >- + Sets the user ACL (what the mailbox user may change in the UI): listed + ACLs on, all others off. Domain admins can change only ACLs they have + themselves. Answers `acl_saved`. requestBody: + required: true content: application/json: schema: - example: - - tag1 - - tag2 + type: object + required: + - items + - attr properties: items: - description: contains list of mailboxes you want to delete + $ref: "#/components/schemas/MailboxItems" + attr: type: object - type: object - summary: Delete mailbox tags - "/api/v1/delete/domain/tag/{domain}": - post: - parameters: - - description: name of domain - in: path - name: domain - example: domain.tld - required: true - schema: - type: string + properties: + user_acl: + description: ACLs to switch on (a single string is one ACL); an empty list switches all off + oneOf: + - $ref: "#/components/schemas/UserAclName" + - type: array + items: + $ref: "#/components/schemas/UserAclName" + example: + items: + - john.doe@example.org + attr: + user_acl: + - spam_alias + - tls_policy + - spam_score + - spam_policy + - delimiter_action + - eas_reset + - pushover + - quarantine + - quarantine_notification + - app_passwds + - pw_reset responses: + "200": + $ref: "#/components/responses/WriteResult" "401": $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - mailbox - - delete - - tags_domain - - tags: - - tag1 - - tag2 - domain: domain.tld - - null - msg: - - domain_modified - - domain.tld - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Domains - description: You can delete one or more domain tags. - operationId: Delete domain tags - requestBody: - content: - application/json: - schema: - example: - - tag1 - - tag2 - properties: - items: - description: contains list of domains you want to delete - type: object - type: object - summary: Delete domain tags - /api/v1/edit/alias: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - mailbox - - edit - - alias - - active: "1" - address: alias@domain.tld - goto: destination@domain.tld - id: - - "6" - private_comment: private comment - public_comment: public comment - - null - msg: - - alias_modified - - alias@domain.tld - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/alias/{id}: + get: tags: - Aliases + summary: Get aliases + operationId: getAliases description: >- - You can update one or more aliases per request. You can also send just - attributes you want to change - operationId: Update alias - requestBody: - content: - application/json: - schema: - example: - attr: - active: "1" - address: alias@domain.tld - goto: destination@domain.tld - private_comment: private comment - public_comment: public comment - items: ["6"] - properties: - attr: - properties: - active: - description: is alias active or not - type: boolean - address: - description: 'alias address, for catchall use "@domain.tld"' - type: string - goto: - description: "destination address, comma separated" - type: string - goto_ham: - description: learn as ham - type: boolean - goto_null: - description: silently ignore - type: boolean - goto_spam: - description: learn as spam - type: boolean - private_comment: - type: string - public_comment: - type: string - sogo_visible: - description: toggle visibility as selectable sender in SOGo - type: boolean - type: object - items: - description: contains list of aliases you want update - type: object - type: object - summary: Update alias - /api/v1/edit/api-key: - post: + `all` lists the aliases of the domains the caller manages, an ID or + address returns one alias. Mailbox addresses are not listed. `{}` if + there is none. + parameters: + - name: id + in: path + required: true + description: "`all`, or the ID or address of an alias" + schema: + type: string + example: all responses: - "401": - $ref: "#/components/responses/Unauthorized" "200": + description: The list of aliases (`all`) or one alias content: application/json: - examples: - response: - value: - - log: - - api - - edit - - key - - id: - - "3" - regen_key: "1" - msg: - - api_key_modified - - provisioning - type: success schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} + anyOf: + - type: array + items: + $ref: "#/components/schemas/Alias" + - $ref: "#/components/schemas/Alias" + examples: + all: + summary: get/alias/all + value: + - in_primary_domain: "" + id: 12 + domain: example.org + public_comment: Sales team + private_comment: null + goto: anna@example.org,ben@example.org + address: sales@example.org + is_catch_all: 0 + internal: 0 + active: 1 + active_int: 1 + sogo_visible: 1 + sogo_visible_int: 1 + sender_allowed: 1 + group_id: null + group_name: null + created: "2026-10-26 14:43:58" + modified: "2026-11-08 20:38:01" + - in_primary_domain: example.org + id: 20 + domain: example.net + public_comment: "" + private_comment: "" + goto: null@localhost + address: "@example.net" + is_catch_all: 1 + internal: 0 + active: 1 + active_int: 1 + sogo_visible: 0 + sogo_visible_int: 0 + sender_allowed: 0 + group_id: null + group_name: null + created: "2026-11-02 09:12:40" + modified: null + one: + summary: get/alias/12 + value: + in_primary_domain: "" + id: 12 + domain: example.org + public_comment: Sales team + private_comment: null + goto: anna@example.org,ben@example.org + address: sales@example.org + is_catch_all: 0 + internal: 0 + active: 1 + active_int: 1 + sogo_visible: 1 + sogo_visible_int: 1 + sender_allowed: 1 + group_id: null + group_name: null + created: "2026-10-26 14:43:58" + modified: "2026-11-08 20:38:01" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/alias/all/{domains}: + get: + tags: + - Aliases + summary: Get the aliases of domains + operationId: getAliasesByDomain + description: >- + Lists the aliases of the named domains or alias domains, skipping + domains the caller does not manage. `{}` if there is none. + parameters: + - name: domains + in: path + required: true + description: Comma-separated domain names + schema: + type: string + example: example.org,example.net + responses: + "200": + description: The list of aliases + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Alias" + example: + - in_primary_domain: "" + id: 12 + domain: example.org + public_comment: Sales team + private_comment: null + goto: anna@example.org,ben@example.org + address: sales@example.org + is_catch_all: 0 + internal: 0 + active: 1 + active_int: 1 + sogo_visible: 1 + sogo_visible_int: 1 + sender_allowed: 1 + group_id: null + group_name: null + created: "2026-10-26 14:43:58" + modified: "2026-11-08 20:38:01" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/time_limited_aliases/{mailbox}: + get: + tags: + - Mailbox user settings + summary: Get the time-limited aliases of a mailbox + operationId: getTimeLimitedAliases + description: >- + The valid or permanent time-limited aliases of the mailbox. `{}` if + none or no access. + parameters: + - name: mailbox + in: path + required: true + description: Mailbox address + schema: + type: string + example: john.doe@example.org + responses: + "200": + description: List of aliases + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/TimeLimitedAlias" + example: + - address: kahd.osuwe@example.org + goto: john.doe@example.org + description: Online shop registration + validity: 1795699200 + created: "2026-11-10 09:00:00" + modified: null + permanent: 0 + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/edit/time_limited_alias: + post: + tags: + - Mailbox user settings + summary: Update time-limited aliases + operationId: editTimeLimitedAlias + description: >- + Sets a new expiry (`validity` hours from now) or makes the aliases + permanent. Needs the user ACL `spam_alias`. Without `validity` or a + true `permanent` nothing changes. + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + description: Alias address or list of addresses + oneOf: + - type: string + - type: array + items: + type: string + attr: + type: object + properties: + validity: + type: [integer, string] + description: Hours from now until the alias expires (not range-checked); ends a permanent state + permanent: + type: [boolean, integer, string] + description: true makes the alias permanent (wins over `validity`) + example: + items: + - kahd.osuwe@example.org + attr: + validity: 24 + permanent: 0 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/time_limited_alias: + post: + tags: + - Mailbox user settings + summary: Delete time-limited aliases + operationId: deleteTimeLimitedAlias + description: >- + Deletes time-limited aliases. Needs the user ACL `spam_alias`. + requestBody: + required: true + content: + application/json: + schema: + type: array + description: Alias addresses + items: + type: string + example: + - kahd.osuwe@example.org + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/pushover-test: + post: + tags: + - Mailbox user settings + summary: Verify the Pushover credentials of mailboxes + operationId: testPushover + description: >- + Checks the stored Pushover credentials of each mailbox with the + Pushover API; `attr` is not used. Same access as `edit/pushover`. + Answers "Pushover API OK (200): ..." or "Pushover API ERR (code): ..."; + a mailbox without settings stops the call. + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - items + properties: + items: + $ref: "#/components/schemas/MailboxItems" + attr: + type: object + description: Not used + example: + items: + - john.doe@example.org + attr: {} + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/delimiter_action: + post: + tags: + - Mailbox user settings + summary: Set the handling of tagged mail + operationId: editDelimiterAction + description: >- + Handling of mail to `user+tag@example.org`: move to the subfolder "tag" + (`subfolder`), add "[tag]" to the subject (`subject`) or nothing + (`none`, also for other values). Needs the user ACL `delimiter_action`. + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + $ref: "#/components/schemas/MailboxItems" + attr: + type: object + properties: + tagged_mail_handler: + type: string + enum: + - subfolder + - subject + - none + example: + items: + - john.doe@example.org + attr: + tagged_mail_handler: subfolder + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/tls_policy: + post: + tags: + - Mailbox user settings + summary: Set the TLS policy of mailboxes + operationId: editTlsPolicy + description: >- + Enforces TLS for incoming and/or outgoing mail; fields not sent keep + their value. Needs the user ACL `tls_policy`. + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + $ref: "#/components/schemas/MailboxItems" + attr: + type: object + properties: + tls_enforce_in: + type: [integer, string] + enum: [0, 1, "0", "1"] + description: 1 accepts incoming mail only over TLS + tls_enforce_out: + type: [integer, string] + enum: [0, 1, "0", "1"] + description: 1 sends outgoing mail only over TLS + example: + items: + - john.doe@example.org + attr: + tls_enforce_in: 1 + tls_enforce_out: 1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/spam-score: + get: + tags: + - Mailbox user settings + summary: Get the default spam score + operationId: getDefaultSpamScore + description: >- + The spam thresholds of the session user; for API keys the Rspamd + default (`5,15` if Rspamd is unreachable). + responses: + "200": + description: Thresholds + content: + application/json: + schema: + $ref: "#/components/schemas/SpamScore" + example: + score: "8,15" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/api-key/{id}: + get: + summary: Get API key + description: One API key with its value. A read-only API key gets `{}`. + operationId: getApiKey tags: - API Keys + parameters: + - name: id + in: path + required: true + description: ID of the API key + schema: + type: integer + example: 3 + responses: + "200": + description: The API key, `{}` if there is none with this ID or for a read-only API key + content: + application/json: + schema: + $ref: "#/components/schemas/ApiKey" + example: + id: 3 + description: provisioning + access: rw + api_key: 1B7E2C-94F0A3-6D5B18-C2E7F4-03A9D6 + allow_from: + - 192.0.2.10 + - 2001:db8::/64 + skip_ip_check: 0 + service: 0 + active: 1 + created: "2026-11-02 09:12:44" + modified: "2026-11-05 16:40:02" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/api-key/all: + get: + summary: Get API keys description: >- - Update API keys. Attributes you do not send keep their value, - `regen_key` replaces the key value with a new random one. Service keys - from mailcow.conf cannot be changed (`api_key_service_locked`). - operationId: Update API keys + Lists all API keys with their values, service keys first. A read-only + API key gets `{}`. + operationId: getApiKeys + tags: + - API Keys + responses: + "200": + description: The API keys, `{}` if there are none or for a read-only API key + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ApiKey" + example: + - id: 1 + description: API_KEY + access: rw + api_key: 8F2D41-0C9A7B-5E3F12-AB46C0-77D1E9 + allow_from: + - 192.0.2.0/24 + skip_ip_check: 0 + service: 1 + active: 1 + created: "2026-09-21 10:20:00" + modified: null + - id: 3 + description: provisioning + access: rw + api_key: 1B7E2C-94F0A3-6D5B18-C2E7F4-03A9D6 + allow_from: + - 192.0.2.10 + - 2001:db8::/64 + skip_ip_check: 0 + service: 0 + active: 1 + created: "2026-11-02 09:12:44" + modified: "2026-11-05 16:40:02" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/app-passwd/all/{mailbox}: + get: + tags: + - App Passwords + summary: Get the app passwords of a mailbox + operationId: getAppPasswords + description: >- + The app passwords of the mailbox, with password hashes. `{}` if none or + no access. + parameters: + - name: mailbox + in: path + required: true + description: Mailbox address + schema: + type: string + example: john.doe@example.org + responses: + "200": + description: List of app passwords + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/AppPassword" + example: + - id: 23 + name: Thunderbird + mailbox: john.doe@example.org + domain: example.org + password: "{BLF-CRYPT}$2y$10$..." + created: "2026-11-08 20:38:01" + modified: null + imap_access: 1 + smtp_access: 1 + dav_access: 0 + eas_access: 0 + pop3_access: 0 + sieve_access: 1 + active: 1 + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/app-passwd/all: + get: + tags: + - App Passwords + summary: Get the app passwords of the logged-in mailbox + operationId: getOwnAppPasswords + description: >- + The app passwords of the logged-in mailbox user. API keys get `{}`; use + `get/app-passwd/all/{mailbox}`. + responses: + "200": + description: List of app passwords + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/AppPassword" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/app-passwd/{id}: + get: + tags: + - App Passwords + summary: Get an app password (broken) + operationId: getAppPassword + description: >- + Broken: always ends with an error and an empty body. Use + `get/app-passwd/all/{mailbox}`. + parameters: + - name: id + in: path + required: true + description: App password ID + schema: + type: integer + example: 23 + responses: + "200": + description: Empty body + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/edit/app-passwd: + post: + tags: + - App Passwords + summary: Update app passwords + operationId: editAppPassword + description: >- + Changes app passwords by ID; fields not sent keep their value. Needs + the user ACL `app_passwds`. + + + Messages: `object_modified`; errors `app_passwd_id_invalid`, + `password_complexity`. + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + description: App password ID or list of IDs + oneOf: + - type: integer + - type: array + items: + type: integer + attr: + type: object + properties: + username: + type: string + description: Mailbox the app passwords belong to (required for API keys) + app_name: + type: string + app_passwd: + type: string + format: password + description: New password; changed only together with `app_passwd2` + app_passwd2: + type: string + format: password + protocols: + description: Replaces the allowed protocols + type: array + items: + type: string + enum: + - imap_access + - smtp_access + - pop3_access + - sieve_access + - dav_access + - eas_access + active: + type: [integer, string] + enum: [0, 1, "0", "1"] + example: + items: + - 23 + attr: + username: john.doe@example.org + active: 0 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/bcc/{id}: + get: + tags: + - Address Rewriting + summary: Get BCC maps + operationId: getBccMaps + description: >- + `all` lists the BCC maps of the domains the caller manages, an ID + returns one map with an extra member `"0": null`. `{}` if there is + none. + parameters: + - name: id + in: path + required: true + description: "`all` or the ID of a BCC map" + schema: + type: string + example: all + responses: + "200": + description: The list of BCC maps (`all`) or one BCC map + content: + application/json: + schema: + anyOf: + - type: array + items: + $ref: "#/components/schemas/BccMap" + - $ref: "#/components/schemas/BccMap" + examples: + all: + summary: get/bcc/all + value: + - id: 3 + local_dest: "@example.org" + bcc_dest: archive@example.com + active: 1 + type: rcpt + created: "2026-11-03 10:15:22" + domain: example.org + modified: null + one: + summary: get/bcc/3 + value: + id: 3 + local_dest: "@example.org" + bcc_dest: archive@example.com + active: 1 + type: rcpt + created: "2026-11-03 10:15:22" + domain: example.org + modified: null + "0": null + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/dkim/{domain}: + get: + summary: Get the DKIM key of a domain + description: >- + The DKIM public key of a domain or alias domain and the TXT record for + `._domainkey.`. `privkey` is empty unless + `SHOW_DKIM_PRIV_KEYS` is enabled. + operationId: getDkimKey + tags: + - DKIM + parameters: + - name: domain + in: path + required: true + description: Domain or alias domain name + schema: + type: string + example: example.org + responses: + "200": + description: The DKIM key + content: + application/json: + schema: + $ref: "#/components/schemas/DkimKey" + example: + pubkey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxV3...IDAQAB + length: "2048" + dkim_txt: v=DKIM1;k=rsa;t=s;s=email;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxV3...IDAQAB + dkim_selector: dkim + privkey: "" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/add/dkim_import: + post: + summary: Import a DKIM key + description: >- + Imports an RSA private key as the DKIM key of a domain, which need not + exist in mailcow. Success answers `dkim_removed` and `dkim_added`. + + + Messages: errors `private_key_error`, `dkim_domain_or_sel_exists`. + operationId: importDkimKey + tags: + - DKIM + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - domain + - private_key_file + properties: + domain: + type: string + description: Domain name + dkim_selector: + type: string + default: dkim + description: Selector (letters, digits, `-`, `_`, `.`) + private_key_file: + type: string + description: The private key in PEM format (the text, not a file upload) + overwrite_existing: + type: [integer, string] + enum: [0, 1, "0", "1"] + default: 0 + description: Replace an existing key of the domain + example: + domain: example.org + dkim_selector: dkim2026 + private_key_file: "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASC...\n-----END PRIVATE KEY-----" + overwrite_existing: 1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/domain-admin/all: + get: + summary: Get domain administrators + description: Lists all domain administrators. + operationId: getDomainAdmins + tags: + - Domain admin + responses: + "200": + description: The domain administrators, `{}` if there are none + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/DomainAdmin" + example: + - username: domainadmin1 + tfa_active: 0 + tfa_active_int: 0 + active: 1 + active_int: 1 + created: "2026-09-21 10:24:48" + attributes: + force_tfa: "0" + force_pw_update: "0" + selected_domains: + - example.org + unselected_domains: + - example.com + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/domain-admin/{username}: + get: + summary: Get domain administrator + description: Details of one domain administrator. + operationId: getDomainAdmin + tags: + - Domain admin + parameters: + - name: username + in: path + required: true + description: Username of the domain administrator + schema: + type: string + example: domainadmin1 + responses: + "200": + description: The domain administrator, `{}` if there is none of this name + content: + application/json: + schema: + $ref: "#/components/schemas/DomainAdmin" + example: + username: domainadmin1 + tfa_active: 0 + tfa_active_int: 0 + active: 1 + active_int: 1 + created: "2026-09-21 10:24:48" + attributes: + force_tfa: "0" + force_pw_update: "0" + selected_domains: + - example.org + - example.com + unselected_domains: "" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/domain/{id}: + get: + summary: Get domains + description: >- + `all` lists all domains (`{}` if none), a domain name returns that + domain, an alias domain name its target. Domain admins see only their + domains. Quotas are in bytes. + operationId: getDomains + tags: + - Domains + parameters: + - name: id + in: path + required: true + description: "`all` or a domain name" + schema: + type: string + example: all + - name: tags + in: query + required: false + description: >- + Only with `all`: comma-separated tag names, answers only the domains + with a tag that contains one of them + schema: + type: string + example: customer,premium + responses: + "200": + description: The list of domains (`all`) or one domain + content: + application/json: + schema: + oneOf: + - type: array + items: + $ref: "#/components/schemas/Domain" + - $ref: "#/components/schemas/Domain" + example: + - max_new_mailbox_quota: 10632560640 + def_new_mailbox_quota: 3221225472 + quota_used_in_domain: "104857600" + bytes_total: "79324302" + msgs_total: "132" + mboxes_in_domain: 3 + mboxes_left: 7 + domain_name: example.org + domain_h_name: example.org + description: Example Org + max_num_aliases_for_domain: 400 + max_num_mboxes_for_domain: 10 + def_quota_for_mbox: 3221225472 + max_quota_for_mbox: 10737418240 + max_quota_for_domain: 10737418240 + relayhost: "0" + backupmx: 0 + backupmx_int: 0 + gal: 1 + gal_int: 1 + rl: + value: "100" + frame: h + active: 1 + active_int: 1 + relay_all_recipients: 0 + relay_all_recipients_int: 0 + relay_unknown_only: 0 + relay_unknown_only_int: 0 + created: "2026-09-21 10:24:34" + modified: "2026-11-06 18:15:08" + aliases_in_domain: 1 + aliases_left: 399 + domain_admins: anna.admin + tags: + - customer + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/domain/template/{id}: + get: + summary: Get domain templates + description: >- + `all` lists the domain templates, an ID returns that template. Domain + admins may call it too. Quotas are in bytes. + operationId: getDomainTemplates + tags: + - Domains + parameters: + - name: id + in: path + required: true + description: "`all` or a template ID" + schema: + type: string + example: all + responses: + "200": + description: The list of templates (`all`) or one template + content: + application/json: + schema: + oneOf: + - type: array + items: + $ref: "#/components/schemas/DomainTemplate" + - $ref: "#/components/schemas/DomainTemplate" + example: + - id: 1 + template: Default + type: domain + attributes: + tags: [] + max_num_aliases_for_domain: 400 + max_num_mboxes_for_domain: 10 + def_quota_for_mbox: 3221225472 + max_quota_for_mbox: 10737418240 + max_quota_for_domain: 10737418240 + rl_frame: s + rl_value: "" + active: 1 + gal: 1 + backupmx: 0 + relay_all_recipients: 0 + relay_unknown_only: 0 + dkim_selector: dkim + key_size: 2048 + created: "2026-09-21 10:23:08" + modified: null + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/add/domain/template: + post: + summary: Add a domain template + description: >- + Adds a domain template (defaults for new domains). Quotas are sent in + MiB, returned in bytes. Fields not sent, and numbers and quotas sent as + 0, get the defaults shown. + + + Messages: `template_added`; errors `template_name_invalid`, + `template_exists`. + operationId: addDomainTemplate + tags: + - Domains + requestBody: + required: true + content: + application/json: + schema: + allOf: + - $ref: "#/components/schemas/DomainTemplateInput" + - required: + - template + example: + template: Small business + max_num_aliases_for_domain: 400 + max_num_mboxes_for_domain: 25 + def_quota_for_mbox: 2048 + max_quota_for_mbox: 5120 + max_quota_for_domain: 51200 + rl_value: 500 + rl_frame: h + active: 1 + gal: 1 + backupmx: 0 + relay_all_recipients: 0 + relay_unknown_only: 0 + dkim_selector: dkim + key_size: 2048 + tags: + - small + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/domain/template: + post: + summary: Edit domain templates + description: >- + Replaces domain templates. Fields not sent are reset: numbers and quotas + to 0, the rest to the defaults shown. Edit one template per call, with + several IDs all get the first one's name. Always answers + `template_modified`, also for unknown IDs. + operationId: editDomainTemplate + tags: + - Domains + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + description: Template ID or list of template IDs + oneOf: + - type: [integer, string] + - type: array + items: + type: [integer, string] + attr: + $ref: "#/components/schemas/DomainTemplateInput" + example: + items: + - 2 + attr: + template: Small business + max_num_aliases_for_domain: 400 + max_num_mboxes_for_domain: 50 + def_quota_for_mbox: 2048 + max_quota_for_mbox: 5120 + max_quota_for_domain: 102400 + rl_value: 500 + rl_frame: h + active: 1 + gal: 1 + backupmx: 0 + relay_all_recipients: 0 + relay_unknown_only: 0 + dkim_selector: dkim + key_size: 2048 + tags: + - small + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/domain/template: + post: + summary: Delete a domain template + description: >- + Deletes a domain template; only the first ID of the list is used. The + `Default` template cannot be deleted. Always answers + `template_removed`. + operationId: deleteDomainTemplate + tags: + - Domains + requestBody: + required: true + content: + application/json: + schema: + type: array + description: Template IDs (only the first is used) + items: + type: [integer, string] + example: + - 2 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/search/domain: + post: + summary: Search domains (table of the UI) + description: >- + Paging, sorting and searching for the DataTables domain table of the UI. + Read-only API keys may use it, domain admins see only their domains. + + + Positions in `columns` and `order[].column`: 2 domain name, 3 aliases, + 4 mailboxes, 5 domain quota, 6 storage (sort only), 7 default mailbox + quota, 8 max. mailbox quota, 10 relay domain, 14 tags (global search + only), 15 active; others mean the domain name. `columns` is required + with `search.value`. + + + Without `Content-Type: application/json` all domains are returned. SQL + errors answer `{"error": "..."}` with status 200. + operationId: searchDomains + tags: + - Domains + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/DomainSearchRequest" + example: + draw: 1 + start: 0 + length: 10 + search: + value: example + order: + - column: 2 + dir: asc + columns: + - data: "" + searchable: false + orderable: false + - data: chkbox + searchable: false + orderable: false + - data: domain_h_name + searchable: true + orderable: true + search: + value: "" + responses: + "200": + description: One page of domains, with the counts DataTables needs + content: + application/json: + schema: + $ref: "#/components/schemas/DomainSearchResult" + example: + draw: 1 + recordsTotal: 12 + recordsFiltered: 1 + data: + - max_new_mailbox_quota: 10632560640 + def_new_mailbox_quota: 3221225472 + quota_used_in_domain: "104857600" + bytes_total: "79324302" + msgs_total: "132" + mboxes_in_domain: 3 + mboxes_left: 7 + domain_name: example.org + domain_h_name: example.org + description: Example Org + max_num_aliases_for_domain: 400 + max_num_mboxes_for_domain: 10 + def_quota_for_mbox: 3221225472 + max_quota_for_mbox: 10737418240 + max_quota_for_domain: 10737418240 + relayhost: "0" + backupmx: 0 + backupmx_int: 0 + gal: 1 + gal_int: 1 + rl: false + active: 1 + active_int: 1 + relay_all_recipients: 0 + relay_all_recipients_int: 0 + relay_unknown_only: 0 + relay_unknown_only_int: 0 + created: "2026-09-21 10:24:34" + modified: "2026-11-06 18:15:08" + aliases_in_domain: 1 + aliases_left: 399 + domain_admins: "-" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/alias-domain/{id}: + get: + summary: Get alias domains + description: >- + `all` lists all alias domains, a name returns that alias domain. Domain + admins see only those of their domains. + operationId: getAliasDomains + tags: + - Domains + parameters: + - name: id + in: path + required: true + description: "`all` or an alias domain name" + schema: + type: string + example: all + responses: + "200": + description: The list of alias domains (`all`) or one alias domain + content: + application/json: + schema: + oneOf: + - type: array + items: + $ref: "#/components/schemas/AliasDomain" + - $ref: "#/components/schemas/AliasDomain" + example: + - alias_domain: example.net + parent_is_backupmx: 0 + target_domain: example.org + active: 1 + active_int: 1 + rl: false + created: "2026-10-02 08:12:45" + modified: null + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/add/alias-domain: + post: + summary: Add alias domains + description: >- + Adds alias domains: mail goes to the same local part in the target + domain, which must be accessible and no relay domain. Needs the ACL + `alias_domains`. Can also set the rate limit and create a DKIM key. An + invalid name ends the call without an answer. + + + Messages: `aliasd_added`; errors `alias_domain_invalid`, + `targetd_not_found`, `targetd_relay_domain`. + operationId: addAliasDomain + tags: + - Domains + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - alias_domain + - target_domain + properties: + alias_domain: + type: string + description: >- + Alias domain name; several are separated by spaces, commas, + semicolons or line breaks + target_domain: + type: string + description: The domain the alias domain points to + active: + type: [integer, string] + enum: [0, 1, "0", "1"] + default: 0 + description: Alias domain active (inactive when not sent) + rl_value: + type: [integer, string] + description: Rate limit, messages per `rl_frame`; empty or 0 = none + rl_frame: + type: string + enum: [s, m, h, d] + description: Rate limit time frame + dkim_selector: + type: string + description: Selector of the DKIM key that is created + key_size: + type: [integer, string] + description: >- + RSA size of the new DKIM key in bits; a key needs + `key_size` and `dkim_selector` + example: + alias_domain: example.net + target_domain: example.org + active: 1 + rl_value: 100 + rl_frame: h + dkim_selector: dkim + key_size: 2048 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/alias-domain: + post: + summary: Edit alias domains + description: >- + Changes alias domains; fields not sent keep their value. The new target + must be an accessible domain, not an alias domain. + + + Messages: `aliasd_modified`; errors `alias_domain_invalid`, + `target_domain_invalid`. + operationId: editAliasDomain + tags: + - Domains + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + description: Alias domain name or list of alias domain names + oneOf: + - type: string + - type: array + items: + type: string + attr: + type: object + properties: + active: + type: [integer, string] + enum: [0, 1, "0", "1"] + description: Alias domain active + target_domain: + type: string + description: New target domain + example: + items: + - example.net + attr: + active: 1 + target_domain: example.org + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/alias-domain: + post: + summary: Delete alias domains + description: >- + Deletes alias domains with their aliases, spam aliases and BCC maps. + The rate limit is kept. + + + Messages: `alias_domain_removed`; error `domain_invalid`. + operationId: deleteAliasDomain + tags: + - Domains + requestBody: + required: true + content: + application/json: + schema: + type: array + description: Alias domain names + items: + type: string + example: + - example.net + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/add/mta-sts: + post: + summary: Add an MTA-STS policy + description: >- + Adds the MTA-STS policy of a domain, published when active at + `https://mta-sts./.well-known/mta-sts.txt`. The `_mta-sts` TXT + record ID is the change time (`YYYYMMDDhhmmss`). Policies of alias + domains are never published, they use their target's. A second policy + fails with a database error. There is no read route. + + + Messages: errors `version_invalid`, `mode_invalid`, `max_age_invalid`, + `mx_invalid`. + operationId: addMtaSts + tags: + - Domains + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - domain + - version + - mode + - mx + - max_age + properties: + domain: + type: string + description: Domain or alias domain + version: + type: string + enum: [stsv1, STSv1] + description: Policy version (case-insensitive) + mode: + type: string + enum: [enforce, testing, none] + description: >- + `enforce` rejects delivery without valid TLS, `testing` + only reports, `none` publishes without effect + mx: + type: string + description: Comma-separated MX host names, wildcards like `*.example.org` allowed + max_age: + type: [integer, string] + description: Seconds senders may cache the policy, 1 to 31536000 + active: + type: [integer, string] + enum: [0, 1, "0", "1"] + default: 0 + description: Policy published (inactive when not sent) + example: + domain: example.org + version: stsv1 + mode: enforce + mx: mail.example.org,mx2.example.org + max_age: 86400 + active: 1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/mta-sts: + post: + summary: Edit MTA-STS policies + description: >- + Changes MTA-STS policies; fields not sent keep their value, but + `version` is required. Changing `version`, `mode`, `mx` or `max_age` + gives a new policy ID. A domain without policy answers `access_denied`. + + + Messages: `object_modified`; errors `version_invalid`, `mode_invalid`, + `mx_invalid`. + operationId: editMtaSts + tags: + - Domains + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + description: Domain name or list of domain names + oneOf: + - type: string + - type: array + items: + type: string + attr: + type: object + required: + - version + properties: + version: + type: string + enum: [stsv1, STSv1] + description: Policy version + mode: + type: string + enum: [enforce, testing, none] + description: Policy mode + mx: + type: string + description: Comma-separated MX host names + max_age: + type: [integer, string] + description: Seconds senders may cache the policy, 1 to 31557600 + active: + type: [integer, string] + enum: [0, 1, "0", "1"] + description: Policy published + example: + items: + - example.org + attr: + version: stsv1 + mode: testing + mx: mail.example.org + max_age: 604800 + active: 1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/fail2ban: + get: + summary: Get Fail2Ban settings and bans + description: >- + Returns the Fail2Ban settings, regex filters, allow- and denylists and + the current bans. + operationId: getFail2Ban + tags: + - Fail2Ban + responses: + "200": + description: Settings and bans + content: + application/json: + schema: + $ref: "#/components/schemas/Fail2Ban" + example: + ban_time: 1800 + ban_time_increment: true + max_ban_time: 86400 + netban_ipv4: 32 + netban_ipv6: 128 + max_attempts: 10 + retry_window: 600 + banlist_id: a2c11baf-5770-47de-9c5e-575bd7bc9218 + manage_external: 0 + regex: + "1": "^mailcow UI: Invalid password for .+ by ([0-9a-f\\.:]+)$" + "2": "^Rspamd UI: Invalid password by ([0-9a-f\\.:]+)$" + whitelist: |- + 192.0.2.0/24 + mail.example.org + blacklist: 198.51.100.66/32 + perm_bans: + - network: 198.51.100.66/32 + ip: 198.51.100.66 + active_bans: + - queued_for_unban: 0 + network: 203.0.113.7/32 + ip: 203.0.113.7 + banned_until: 00h 27m 08s + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/edit/fail2ban/banlist: + post: + summary: Renew the Fail2Ban banlist URL + description: >- + Gives the banlist URL `/f2b-banlist?id=` a new random ID; + the old URL stops working. `items` must hold the current `banlist_id`, + else the status is 404. A Redis error gives status 500. + + + Messages: `f2b_banlist_refreshed`; errors `redis_error`. + operationId: refreshFail2BanBanlist + tags: + - Fail2Ban requestBody: content: application/json: schema: - example: - items: - - "3" - attr: - description: provisioning - access: ro - allow_from: "192.0.2.10" - skip_ip_check: "0" - active: "1" - regen_key: "0" - properties: - attr: - properties: - description: - description: free text, max. 255 characters - type: string - access: - enum: - - ro - - rw - type: string - allow_from: - description: IPs/CIDR networks, separated by commas, spaces or newlines (or an array) - type: string - skip_ip_check: - type: boolean - active: - type: boolean - regen_key: - description: issue a new key value - type: boolean - type: object - items: - description: contains list of API key IDs you want to update - type: object type: object - summary: Update API keys - /api/v1/edit/domain: - post: + properties: + items: + description: The current banlist ID (single value or a list with it as first element) + oneOf: + - type: array + items: + type: string + - type: string + attr: + type: object + description: Not used + required: + - items + example: + items: + - a2c11baf-5770-47de-9c5e-575bd7bc9218 responses: + "200": + $ref: "#/components/responses/WriteResult" "401": $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + "404": + description: "`items` does not hold the current banlist ID" + content: + application/json: + schema: + $ref: "#/components/schemas/TaskResult" + example: + type: error + msg: Cannot edit item + /api/v1/get/logs/acme/{count}: + get: + summary: Get ACME logs (count or range) + description: Entries of the ACME (Let's Encrypt) log, newest first. + operationId: getAcmeLogsByCount + tags: + - Logs + parameters: + - name: count + in: path + required: true + description: "`N`: the newest N entries; `from-to`: entries `from` to `to` (newest = 1)" + schema: + type: string + pattern: ^[0-9]+(-[0-9]+)?$ + example: "50" + responses: "200": + $ref: "#/components/responses/AcmeLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/api/{count}: + get: + summary: Get API logs (count or range) + description: API requests with their data (secrets replaced by `*`), newest first. + operationId: getApiLogsByCount + tags: + - Logs + parameters: + - name: count + in: path + required: true + description: "`N`: the newest N entries; `from-to`: entries `from` to `to` (newest = 1)" + schema: + type: string + pattern: ^[0-9]+(-[0-9]+)?$ + example: "50" + responses: + "200": + $ref: "#/components/responses/ApiLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/autodiscover/{count}: + get: + summary: Get Autodiscover logs (count or range) + description: Autodiscover requests (Outlook, ActiveSync) with the offered service, newest first. + operationId: getAutodiscoverLogsByCount + tags: + - Logs + parameters: + - name: count + in: path + required: true + description: "`N`: the newest N entries; `from-to`: entries `from` to `to` (newest = 1)" + schema: + type: string + pattern: ^[0-9]+(-[0-9]+)?$ + example: "50" + responses: + "200": + $ref: "#/components/responses/AutodiscoverLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/dovecot/{count}: + get: + summary: Get Dovecot logs (count or range) + description: Entries of the Dovecot log (IMAP, POP3, Sieve, LMTP), newest first. + operationId: getDovecotLogsByCount + tags: + - Logs + parameters: + - name: count + in: path + required: true + description: "`N`: the newest N entries; `from-to`: entries `from` to `to` (newest = 1)" + schema: + type: string + pattern: ^[0-9]+(-[0-9]+)?$ + example: "50" + responses: + "200": + $ref: "#/components/responses/DovecotLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/netfilter/{count}: + get: + summary: Get netfilter logs (count or range) + description: Entries of netfilter (failed logins, bans), newest first. + operationId: getNetfilterLogsByCount + tags: + - Logs + parameters: + - name: count + in: path + required: true + description: "`N`: the newest N entries; `from-to`: entries `from` to `to` (newest = 1)" + schema: + type: string + pattern: ^[0-9]+(-[0-9]+)?$ + example: "50" + responses: + "200": + $ref: "#/components/responses/NetfilterLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/postfix/{count}: + get: + summary: Get Postfix logs (count or range) + description: Entries of the Postfix log (SMTP), newest first. + operationId: getPostfixLogsByCount + tags: + - Logs + parameters: + - name: count + in: path + required: true + description: "`N`: the newest N entries; `from-to`: entries `from` to `to` (newest = 1)" + schema: + type: string + pattern: ^[0-9]+(-[0-9]+)?$ + example: "50" + responses: + "200": + $ref: "#/components/responses/PostfixLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/ratelimited/{count}: + get: + summary: Get rate limit logs (count or range) + description: Messages rejected by a rate limit, newest first. + operationId: getRatelimitLogsByCount + tags: + - Logs + parameters: + - name: count + in: path + required: true + description: "`N`: the newest N entries; `from-to`: entries `from` to `to` (newest = 1)" + schema: + type: string + pattern: ^[0-9]+(-[0-9]+)?$ + example: "50" + responses: + "200": + $ref: "#/components/responses/RatelimitLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/rspamd-history/{count}: + get: + summary: Get Rspamd history (count or range) + description: Messages scanned by Rspamd, newest first. + operationId: getRspamdHistoryByCount + tags: + - Logs + parameters: + - name: count + in: path + required: true + description: >- + `N`: the newest N messages; `from-to` (from ≥ 1) counts from 0, so + `2-3` gives the third and fourth newest + schema: + type: string + pattern: ^[0-9]+(-[0-9]+)?$ + example: "50" + responses: + "200": + $ref: "#/components/responses/RspamdHistory" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/sogo/{count}: + get: + summary: Get SOGo logs (count or range) + description: Entries of the SOGo log, newest first. + operationId: getSogoLogsByCount + tags: + - Logs + parameters: + - name: count + in: path + required: true + description: "`N`: the newest N entries; `from-to`: entries `from` to `to` (newest = 1)" + schema: + type: string + pattern: ^[0-9]+(-[0-9]+)?$ + example: "50" + responses: + "200": + $ref: "#/components/responses/SogoLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/watchdog/{count}: + get: + summary: Get watchdog logs (count or range) + description: Watchdog health checks, newest first. + operationId: getWatchdogLogsByCount + tags: + - Logs + parameters: + - name: count + in: path + required: true + description: "`N`: the newest N entries; `from-to`: entries `from` to `to` (newest = 1)" + schema: + type: string + pattern: ^[0-9]+(-[0-9]+)?$ + example: "50" + responses: + "200": + $ref: "#/components/responses/WatchdogLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/acme: + get: + summary: Get ACME logs + description: The newest 1000 entries of the ACME (Let's Encrypt) log, newest first. + operationId: getAcmeLogs + tags: + - Logs + responses: + "200": + $ref: "#/components/responses/AcmeLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/api: + get: + summary: Get API logs + description: >- + The newest 1000 API requests with their data (secrets replaced by + `*`), newest first. + operationId: getApiLogs + tags: + - Logs + responses: + "200": + $ref: "#/components/responses/ApiLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/autodiscover: + get: + summary: Get Autodiscover logs + description: >- + The newest 1000 Autodiscover requests (Outlook, ActiveSync) with the + offered service, newest first. + operationId: getAutodiscoverLogs + tags: + - Logs + responses: + "200": + $ref: "#/components/responses/AutodiscoverLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/cron: + get: + summary: Get cron logs + description: >- + The newest 1000 entries of the mailcow scheduled tasks (identity + provider sync, group shares, ...), newest first. + operationId: getCronLogs + tags: + - Logs + responses: + "200": + $ref: "#/components/responses/CronLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/cron/{count}: + get: + summary: Get cron logs (count or range) + description: Entries of the mailcow scheduled tasks, newest first. + operationId: getCronLogsByCount + tags: + - Logs + parameters: + - name: count + in: path + required: true + description: "`N`: the newest N entries; `from-to`: entries `from` to `to` (newest = 1)" + schema: + type: string + pattern: ^[0-9]+(-[0-9]+)?$ + example: "50" + responses: + "200": + $ref: "#/components/responses/CronLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/dovecot: + get: + summary: Get Dovecot logs + description: The newest 1000 entries of the Dovecot log (IMAP, POP3, Sieve, LMTP), newest first. + operationId: getDovecotLogs + tags: + - Logs + responses: + "200": + $ref: "#/components/responses/DovecotLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/netfilter: + get: + summary: Get netfilter logs + description: The newest 1000 entries of netfilter (failed logins, bans), newest first. + operationId: getNetfilterLogs + tags: + - Logs + responses: + "200": + $ref: "#/components/responses/NetfilterLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/postfix: + get: + summary: Get Postfix logs + description: The newest 1000 entries of the Postfix log (SMTP), newest first. + operationId: getPostfixLogs + tags: + - Logs + responses: + "200": + $ref: "#/components/responses/PostfixLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/ratelimited: + get: + summary: Get rate limit logs + description: The newest 1000 messages rejected by a rate limit, newest first. + operationId: getRatelimitLogs + tags: + - Logs + responses: + "200": + $ref: "#/components/responses/RatelimitLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/rspamd-history: + get: + summary: Get Rspamd history + description: The newest 1000 messages scanned by Rspamd, newest first. + operationId: getRspamdHistory + tags: + - Logs + responses: + "200": + $ref: "#/components/responses/RspamdHistory" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/rspamd-stats: + get: + summary: Get Rspamd statistics + description: Rspamd statistics (scanned and learned messages, actions, Bayes). + operationId: getRspamdStats + tags: + - Logs + responses: + "200": + description: The statistics, `{}` if Rspamd cannot be reached + content: + application/json: + schema: + $ref: "#/components/schemas/RspamdStats" + example: + version: 3.12.1 + config_id: ch8ha1o68oxb3xf9izngisz4wxuxgs86n9gg6yko7jtt4msu4bxhuunnoi4pk7an4y5htzjb1y9nwsxmkjhdu671ocb5b5ea1g38csb + uptime: 25891 + read_only: false + scanned: 300 + learned: 30 + actions: + reject: 38 + soft reject: 0 + rewrite subject: 0 + add header: 6 + greylist: 1 + no action: 255 + scan_times: + - 0.340365 + - 0.48114 + spam_count: 44 + ham_count: 256 + connections: 24 + control_connections: 700 + total_learns: 29 + statfiles: + - revision: 6 + users: 1 + used: 0 + total: 0 + size: 0 + symbol: BAYES_SPAM + type: redis + languages: 0 + class: spam + fuzzy_hashes: + mailcow: 0 + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/sasl: + get: + summary: Get SASL logs + description: >- + The newest 1000 successful logins (IMAP, POP3, SMTP, SOGo, ...), one + entry per service, address and user, newest first. + operationId: getSaslLogs + tags: + - Logs + responses: + "200": + $ref: "#/components/responses/SaslLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/sasl/{count}: + get: + summary: Get SASL logs (count or range) + description: >- + Successful logins, one entry per service, address and user, newest + first. + operationId: getSaslLogsByCount + tags: + - Logs + parameters: + - name: count + in: path + required: true + description: >- + `N`: the newest N entries; `from-to`: `to` entries starting at + `from` (newest = 1), so `2-3` gives entries 2 to 4 + schema: + type: string + pattern: ^[0-9]+(-[0-9]+)?$ + example: "50" + responses: + "200": + $ref: "#/components/responses/SaslLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/sogo: + get: + summary: Get SOGo logs + description: The newest 1000 entries of the SOGo log, newest first. + operationId: getSogoLogs + tags: + - Logs + responses: + "200": + $ref: "#/components/responses/SogoLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/ui: + get: + summary: Get mailcow UI logs + description: The newest 1000 messages of UI and API calls, newest first. + operationId: getUiLogs + tags: + - Logs + responses: + "200": + $ref: "#/components/responses/UiLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/ui/{count}: + get: + summary: Get mailcow UI logs (count or range) + description: Messages of UI and API calls, newest first. + operationId: getUiLogsByCount + tags: + - Logs + parameters: + - name: count + in: path + required: true + description: >- + `N`: the newest N entries; `from-to`: `to` entries starting at + `from` (newest = 1), so `2-3` gives entries 2 to 4 + schema: + type: string + pattern: ^[0-9]+(-[0-9]+)?$ + example: "50" + responses: + "200": + $ref: "#/components/responses/UiLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/logs/watchdog: + get: + summary: Get watchdog logs + description: The newest 1000 watchdog health checks, newest first. + operationId: getWatchdogLogs + tags: + - Logs + responses: + "200": + $ref: "#/components/responses/WatchdogLogs" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/mailbox/{id}: + get: + tags: + - Mailboxes + summary: Get a mailbox + operationId: getMailbox + description: >- + One mailbox, `{}` if not found or no access. A mailbox user may read + its own. + + + With `tags`, `{id}` is a search term: the answer lists the mailboxes + whose address contains `{id}` and that have a matching tag. + parameters: + - name: id + in: path + required: true + description: "Mailbox address (with `tags`: part of the address, e.g. a domain)" + schema: + type: string + example: john.doe@example.org + - $ref: "#/components/parameters/MailboxTagsQuery" + responses: + "200": + description: The mailbox; with `tags` a list of mailboxes + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/Mailbox" + - type: array + items: + $ref: "#/components/schemas/Mailbox" + examples: + mailbox: + $ref: "#/components/examples/MailboxDetails" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/mailbox-group/{id}: + get: + summary: Get mailbox group + description: >- + One group by id, visible as in `GET /api/v1/get/mailbox-group/all`. + operationId: getMailboxGroup + tags: + - Groups + parameters: + - name: id + in: path + required: true + description: Group id + schema: + type: integer + example: 7 + responses: + "200": + description: The group + content: + application/json: + schema: + $ref: "#/components/schemas/MailboxGroup" + example: + id: 7 + domain: example.org + name: Sales + description: Sales team + address: sales@example.org + sender_allowed: 1 + sogo_visible: 0 + internal: 1 + template_id: 3 + template: Staff + priority: 10 + idp_ref: null + members: + - username: alice@example.org + source: manual + send_as: + - "@example.com" + imap_grants: [] + sogo_grants: [] + active: 1 + created: "2026-10-25 12:00:00" + modified: null + can_edit: true + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/mailbox-group/member/{username}: + get: + summary: Get group memberships of a mailbox + description: >- + The groups of a mailbox with its effective template and send-as + addresses. Domain admins with the `mailbox_groups` ACL may read their + mailboxes and see only groups of their domains; users may read their + own. + operationId: getMailboxGroupMemberships + tags: + - Groups + parameters: + - name: username + in: path + required: true + description: Mailbox (case-insensitive) + schema: + type: string + example: alice@example.org + responses: + "200": + description: The memberships + content: + application/json: + schema: + $ref: "#/components/schemas/MailboxGroupMemberships" + example: + groups: + - id: 7 + domain: example.org + name: Sales + address: sales@example.org + sender_allowed: 1 + active: 1 + priority: 10 + template: Staff + source: manual + template: Staff + send_as: + - orders@example.org + - sales@example.org + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/mailbox-group/all: + get: + summary: Get mailbox groups + description: >- + All groups the caller may see, ordered by domain and name. Domain admins + with the `mailbox_groups` ACL get the groups of their domains. + operationId: getMailboxGroups + tags: + - Groups + responses: + "200": + description: The groups + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/MailboxGroup" + example: + - id: 7 + domain: example.org + name: Sales + description: Sales team + address: sales@example.org + sender_allowed: 1 + sogo_visible: 0 + internal: 0 + template_id: 3 + template: Staff + priority: 10 + idp_ref: null + members: + - username: alice@example.org + source: manual + - username: bob@example.org + source: idp + send_as: + - orders@example.org + imap_grants: + - owner: shared@example.org + rights: write + subscribe: 1 + state: applied + last_error: null + sogo_grants: + - owner: shared@example.org + type: Calendar + folder: personal + access: read + subscribe: 0 + state: pending + last_error: null + active: 1 + created: "2026-10-25 12:00:00" + modified: "2026-10-28 09:14:03" + can_edit: true + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/mailbox-group/all/{domains}: + get: + summary: Get mailbox groups of domains + description: >- + Like `GET /api/v1/get/mailbox-group/all`, limited to the given domains. + operationId: getMailboxGroupsOfDomains + tags: + - Groups + parameters: + - name: domains + in: path + required: true + description: One domain or a comma-separated list of domains + schema: + type: string + example: example.org,example.com + responses: + "200": + description: The groups of the domains + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/MailboxGroup" + example: + - id: 7 + domain: example.org + name: Sales + description: "" + address: sales@example.org + sender_allowed: 1 + sogo_visible: 1 + internal: 0 + template_id: null + template: null + priority: 0 + idp_ref: null + members: + - username: alice@example.org + source: manual + send_as: [] + imap_grants: [] + sogo_grants: [] + active: 1 + created: "2026-10-25 12:00:00" + modified: null + can_edit: true + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/identity-provider/sync-status: + get: + summary: Get identity sync status + description: >- + Status of the identity sync: provider, mailbox counts and the last 10 + runs. Runs with status `blocked` (stopped by `offboarding_limit`) or + `error` changed nothing. + operationId: getIdentitySyncStatus + tags: + - Identity Provider + responses: + "200": + description: The sync status + content: + application/json: + schema: + $ref: "#/components/schemas/IdentitySyncStatus" + example: + provider: keycloak + can_sync: true + sync_enabled: true + counts: + accounts: 120 + linked: 118 + idp_disabled: 2 + missing: 1 + runs: + - id: 42 + provider: keycloak + mode: run + status: ok + requested_by: "" + created: "2026-11-09 12:00:00" + started: "2026-11-09 12:00:01" + finished: "2026-11-09 12:00:03" + summary: + counts: + links: 0 + creates: 1 + deactivate: 1 + restore: 0 + release: 0 + missing: 1 + found: 0 + updates: 3 + group_creates: 0 + group_renames: 0 + memberships: 2 + orphaned_groups: 0 + conflicts: 0 + membership_removals: 0 + skipped: 0 + errors: 0 + details: + creates: + - new.user@example.org + deactivate: + - left.user@example.org + restore: [] + missing: + - left.user@example.org + group_creates: [] + conflicts: [] + blocked: false + errors: [] + mode: run + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/identity-link/{username}: + get: + summary: Get identity link of a mailbox + description: >- + The Identity Provider user a mailbox is linked to. Domain admins may + read their mailboxes. A never linked mailbox that the sync misses at the + provider has `missing_since` but no `external_id`. + operationId: getIdentityLink + tags: + - Identity Provider + parameters: + - name: username + in: path + required: true + description: Mailbox (case-insensitive) + schema: + type: string + example: alice@example.org + responses: + "200": + description: The link + content: + application/json: + schema: + $ref: "#/components/schemas/IdentityLink" + example: + provider: keycloak + external_id: 8d5da28d-7541-428b-8356-a9704f73e7f4 + idp_disabled: 0 + missing_since: null + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/mailq/all: + get: + summary: Get the mail queue + description: >- + Returns the Postfix mail queue, at most 10000 entries. + operationId: getMailQueue + tags: + - Queue Manager + responses: + "200": + description: List of queued messages + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/MailQueueItem" + example: + - queue_name: deferred + queue_id: B98C6260CA1 + arrival_time: 1762768034 + message_size: 1848 + forced_expire: false + sender: sender@example.org + recipients: + - "rcpt@example.com (connect to mx.example.com[192.0.2.25]:25: Connection timed out)" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/postcat/{qid}: + get: + summary: Get a queued message + description: >- + Returns a queued message as postcat prints it: envelope, headers and + body. The answer is plain text despite the JSON content type. An + unknown queue ID gives the error text of postcat. + operationId: getQueuedMessage + tags: + - Queue Manager + parameters: + - name: qid + in: path + required: true + description: Postfix queue ID + schema: + type: string + example: B98C6260CA1 + responses: + "200": + description: The postcat output as plain text (despite the JSON content type) + content: + application/json: + schema: + type: string + example: | + *** ENVELOPE RECORDS deferred/B/B98C6260CA1 *** + message_size: 1848 612 1 0 1848 0 + message_arrival_time: Mon Nov 10 09:47:14 2026 + create_time: Mon Nov 10 09:47:14 2026 + named_attribute: rewrite_context=local + sender: sender@example.org + *** MESSAGE CONTENTS deferred/B/B98C6260CA1 *** + From: Sender + To: rcpt@example.com + Subject: Test + + Hello + *** HEADER EXTRACTED deferred/B/B98C6260CA1 *** + original_recipient: rcpt@example.com + recipient: rcpt@example.com + *** MESSAGE FILE END deferred/B/B98C6260CA1 *** + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/oauth2-client/{id}: + get: + summary: Get OAuth2 client + description: One OAuth2 client with its secret. + operationId: getOAuth2Client + tags: + - oAuth Clients + parameters: + - name: id + in: path + required: true + description: ID of the client (`id`, not `client_id`) + schema: + type: integer + example: 1 + responses: + "200": + description: The client, `{}` if there is none with this ID + content: + application/json: + schema: + $ref: "#/components/schemas/OAuth2Client" + example: + id: 1 + client_id: 17c76aaa88c0 + client_secret: 73fc668a88147e32a31ff80c + redirect_uri: https://app.example.org/oauth/callback + grant_types: null + scope: profile + user_id: null + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/oauth2-client/all: + get: + summary: Get OAuth2 clients + description: >- + Lists the clients of the mailcow OAuth2 server with their secrets. + operationId: getOAuth2Clients + tags: + - oAuth Clients + responses: + "200": + description: The clients, `{}` if there are none + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/OAuth2Client" + example: + - id: 1 + client_id: 17c76aaa88c0 + client_secret: 73fc668a88147e32a31ff80c + redirect_uri: https://app.example.org/oauth/callback + grant_types: null + scope: profile + user_id: null + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/edit/oauth2-client: + post: + summary: Edit OAuth2 clients + description: >- + Per client, `revoke_tokens` deletes its tokens, else `renew_secret` + sets a new secret, else `redirect_uri` is changed. The first two act + whenever present, even with value 0. + + + Messages: `object_modified`; error `Redirect/Callback URL cannot be + empty`. + operationId: editOAuth2Client + tags: + - oAuth Clients + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + items: + description: ID of the client, or a list of IDs + oneOf: + - type: [integer, string] + - type: array + items: + type: [integer, string] + attr: + type: object + properties: + redirect_uri: + type: string + description: New redirect URL; empty or missing keeps the current one + revoke_tokens: + type: [integer, string, boolean] + description: Present = delete the access and refresh tokens of the client + renew_secret: + type: [integer, string, boolean] + description: Present = generate a new client secret + required: + - items + - attr + example: + items: + - 1 + attr: + redirect_uri: https://app.example.org/oauth/callback2 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/policy_bl_domain/{domain}: + get: + summary: Get the sender deny list of a domain + description: >- + The deny list (blacklist) entries of the domain and all its mailboxes; + `object` tells which. + operationId: getDomainBlacklist + tags: + - Domain antispam policies + parameters: + - name: domain + in: path + required: true + description: Domain name + schema: + type: string + example: example.org + responses: + "200": + description: The deny list entries + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/DomainPolicyEntry" + example: + - object: example.org + value: "*@spam.example.com" + prefid: 13 + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/policy_wl_domain/{domain}: + get: + summary: Get the sender allow list of a domain + description: >- + The allow list (whitelist) entries of the domain and all its + mailboxes; `object` tells which. + operationId: getDomainWhitelist + tags: + - Domain antispam policies + parameters: + - name: domain + in: path + required: true + description: Domain name + schema: + type: string + example: example.org + responses: + "200": + description: The allow list entries + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/DomainPolicyEntry" + example: + - object: example.org + value: "*@partner.example.com" + prefid: 12 + - object: anna@example.org + value: newsletter@example.net + prefid: 15 + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/quarantine/all: + get: + summary: Get quarantined messages + description: >- + Returns the quarantined messages without content. Admins get every + item, domain admins those of their domains, mailbox users their own. + operationId: getQuarantine + tags: + - Quarantine + responses: + "200": + description: List of quarantine items + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/QuarantineItem" + example: + - id: 33 + qid: 8224615004C1 + subject: You have won + virus_flag: 0 + score: 15.48 + rcpt: john.doe@example.org + sender: bounces@send.example.com + action: reject + created: 1762768034 + notified: 1 + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/edit/quarantine_category: + post: + tags: + - Quarantine + summary: Set the quarantine notification category of mailboxes + operationId: editQuarantineCategory + description: >- + Which quarantined mail the notifications list: rejected (`reject`), + sent to junk (`add_header`) or both (`all`). Needs the user ACL + `quarantine_category`; a mailbox user may change only its own. An + invalid value answers `access_denied`. + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + $ref: "#/components/schemas/MailboxItems" + attr: + type: object + required: + - quarantine_category + properties: + quarantine_category: + type: string + enum: + - reject + - add_header + - all + example: + items: + - john.doe@example.org + attr: + quarantine_category: all + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/quarantine/{id}: + get: + summary: Get a quarantined message + description: >- + Returns one quarantine item with the raw message and the Rspamd + symbols. Domain admins and mailbox users only get their own items. + `[]` for an unknown ID. + operationId: getQuarantineItem + tags: + - Quarantine + parameters: + - name: id + in: path + required: true + description: ID of the quarantine item + schema: + type: string + example: "33" + responses: + "200": + description: The quarantine item + content: + application/json: + schema: + $ref: "#/components/schemas/QuarantineItemDetails" + example: + id: 33 + qid: 8224615004C1 + subject: You have won + score: 15.48 + ip: 198.51.100.23 + action: reject + symbols: '[{"name":"BAYES_SPAM","score":5.1,"options":["99.99%"]},{"name":"RBL_SPAMHAUS_SBL","score":4.0}]' + fuzzy_hashes: "[]" + sender: bounces@send.example.com + rcpt: john.doe@example.org + msg: "Return-Path: \r\nFrom: Prize \r\nTo: john.doe@example.org\r\nSubject: You have won\r\n\r\nClick here\r\n" + domain: null + notified: 1 + created: "2026-11-10 09:47:14" + user: unknown + qhash: 3f9d8c0b2a4e6f1d7c5b9a8e0f2d4c6b8a1e3f5d7c9b0a2e4f6d8c1b3a5e7f9d + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/edit/quarantine: + post: + summary: Edit quarantine settings + description: >- + Saves the global quarantine settings. Fields not sent are reset; a + missing `retention_size` or `max_size` turns the quarantine off. The + current values cannot be read through the API. + + + Messages: `saved_settings`; errors `redis_error`. + operationId: editQuarantineSettings + tags: + - Quarantine + requestBody: + content: + application/json: + schema: + type: object + properties: + items: + description: Ignored + attr: + type: object + properties: + action: + type: string + const: settings + retention_size: + type: [integer, string] + description: Items kept per mailbox; 0 disables the quarantine + max_size: + type: [integer, string] + description: Maximum size in MiB of a quarantined message; 0 disables the quarantine + max_score: + type: [number, string] + description: No notification for messages with a higher spam score; empty = no limit + max_age: + type: [integer, string] + description: Days an item is kept; 0 or less becomes 365 + release_format: + type: string + enum: + - raw + - attachment + default: raw + description: Deliver released messages as they are or as an attachment of a new message + exclude_domains: + type: array + items: + type: string + description: Domains and alias domains whose mail is not quarantined + sender: + type: string + description: Sender of the notifications (invalid address = empty) + subject: + type: string + description: Subject of the notifications + bcc: + type: string + description: Address that gets a copy of every notification (invalid address = empty) + redirect: + type: string + description: Address that gets all notifications instead of the mailboxes (invalid address = empty) + html_tmpl: + type: string + description: HTML template of the notifications (empty = the default template) + required: + - action + required: + - attr + example: + items: + - self + attr: + action: settings + retention_size: "20" + max_size: "15" + max_score: "" + max_age: "365" + release_format: raw + exclude_domains: + - example.com + sender: quarantine@example.org + subject: Spam Quarantine Notification + bcc: "" + redirect: "" + html_tmpl: "" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/recipient_map/{id}: + get: + tags: + - Address Rewriting + summary: Get recipient maps + operationId: getRecipientMaps + description: >- + `all` lists the recipient maps, an ID returns one map with an extra + member `"0": null`. `{}` if there is none or the caller is no + administrator. + parameters: + - name: id + in: path + required: true + description: "`all` or the ID of a recipient map" + schema: + type: string + example: all + responses: + "200": + description: The list of recipient maps (`all`) or one recipient map + content: + application/json: + schema: + anyOf: + - type: array + items: + $ref: "#/components/schemas/RecipientMap" + - $ref: "#/components/schemas/RecipientMap" + examples: + all: + summary: get/recipient_map/all + value: + - id: 1 + recipient_map_old: jane.doe@example.org + recipient_map_new: jane.smith@example.org + active: 1 + created: "2026-11-04 08:30:00" + modified: null + - id: 2 + recipient_map_old: "@example.net" + recipient_map_new: "@example.org" + active: 0 + created: "2026-11-04 08:31:12" + modified: "2026-11-05 17:02:45" + one: + summary: get/recipient_map/1 + value: + id: 1 + recipient_map_old: jane.doe@example.org + recipient_map_new: jane.smith@example.org + active: 1 + created: "2026-11-04 08:30:00" + modified: null + "0": null + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/edit/bcc: + post: + tags: + - Address Rewriting + summary: Update BCC maps + operationId: editBccMap + description: >- + Changes the BCC maps in `items`; fields not sent keep their value, + `local_dest` cannot be changed. Same callers as add/bcc. `type` is not + validated: send only `sender` or `rcpt`. + + + Messages: `bcc_edited`; errors `bcc_must_be_email`, `bcc_exists`. + requestBody: + content: + application/json: + schema: + type: object + properties: + items: + description: IDs of the BCC maps, a single value or a list + oneOf: + - type: array + items: + type: [integer, string] + - type: [integer, string] + attr: + type: object + properties: + bcc_dest: + type: string + description: E-mail address that gets the copies + type: + type: string + enum: + - sender + - rcpt + active: + type: [boolean, integer, string] + description: 1 = active, 0 = inactive + required: + - items + - attr + example: + items: + - 3 + attr: + bcc_dest: journal@example.com + active: "1" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/recipient_map: + post: + tags: + - Address Rewriting + summary: Update recipient maps + operationId: editRecipientMap + description: >- + Changes the recipient maps in `items`; fields not sent keep their + value. `recipient_map_entry_exists` stops the call. + + + Messages: `recipient_map_entry_saved`; errors + `invalid_recipient_map_old`, `invalid_recipient_map_new`. + requestBody: + content: + application/json: + schema: + type: object + properties: + items: + description: IDs of the recipient maps, a single value or a list + oneOf: + - type: array + items: + type: [integer, string] + - type: [integer, string] + attr: + type: object + properties: + recipient_map_old: + type: string + description: Original recipient, an e-mail address or a domain + recipient_map_new: + type: string + description: New recipient, an e-mail address or a domain + active: + type: [boolean, integer, string] + description: 1 = active, 0 = inactive + required: + - items + - attr + example: + items: + - 1 + attr: + recipient_map_new: jane.smith@example.org + active: "1" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/relayhost/{id}: + get: + tags: + - Routing + summary: Get sender-dependent transports + operationId: getRelayhosts + description: >- + `all` lists the sender-dependent transports, an ID returns one; the + password is in clear text. `{}` if there is none or the caller is no + administrator. + parameters: + - name: id + in: path + required: true + description: "`all` or the ID of a sender-dependent transport" + schema: + type: string + example: all + responses: + "200": + description: The list of sender-dependent transports (`all`) or one entry + content: + application/json: + schema: + anyOf: + - type: array + items: + $ref: "#/components/schemas/Relayhost" + - $ref: "#/components/schemas/Relayhost" + examples: + all: + summary: get/relayhost/all + value: + - id: 1 + hostname: "[smtp.example.com]:587" + username: relay-user@example.com + password: Secret-Passphrase-42 + active: 1 + password_short: Sec... + used_by_domains: example.org, example.net + used_by_mailboxes: anna@example.com + one: + summary: get/relayhost/1 + value: + id: 1 + hostname: "[smtp.example.com]:587" + username: relay-user@example.com + password: Secret-Passphrase-42 + active: 1 + password_short: Sec... + used_by_domains: example.org, example.net + used_by_mailboxes: anna@example.com + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/resource/all: + get: + tags: + - Resources + summary: Get all resources + operationId: getResources + description: >- + All resources of the domains the caller manages, `{}` if none. + responses: + "200": + description: List of resources + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Resource" + example: + - name: MeetingRoom1@example.org + kind: location + multiple_bookings: 0 + description: Meeting Room 1 + active: 1 + active_int: 1 + domain: example.org + local_part: MeetingRoom1 + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/resource/{id}: + get: + tags: + - Resources + summary: Get a resource + operationId: getResource + description: >- + One resource by address, `{}` if not found or no access. + parameters: + - name: id + in: path + required: true + description: Address of the resource + schema: + type: string + example: MeetingRoom1@example.org + responses: + "200": + description: The resource + content: + application/json: + schema: + $ref: "#/components/schemas/Resource" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/edit/resource: + post: + tags: + - Resources + summary: Update resources + operationId: editResource + description: >- + Changes resources, also for domain admins; fields not sent keep their + value. The address does not change with the description. + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + description: Resource address or list of addresses + oneOf: + - type: string + - type: array + items: + type: string + attr: + type: object + properties: + description: + type: string + description: Name shown in SOGo + kind: + type: string + enum: + - location + - group + - thing + multiple_bookings: + type: [integer, string] + description: 0 always free, -1 unlimited but busy when booked, n ≥ 1 at most n overlapping bookings + active: + type: [integer, string] + enum: [0, 1, "0", "1"] + example: + items: + - MeetingRoom1@example.org + attr: + description: Meeting Room 1 (2nd floor) + multiple_bookings: -1 + active: 1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/rl-mbox/{mailbox}: + get: + tags: + - Ratelimits + summary: Get the rate limit of a mailbox + operationId: getMailboxRatelimit + description: >- + The rate limit set on the mailbox; `{}` if it has none (the domain + limit applies) or no access. + parameters: + - name: mailbox + in: path + required: true + description: Mailbox address + schema: + type: string + example: john.doe@example.org + responses: + "200": + description: The rate limit + content: + application/json: + schema: + $ref: "#/components/schemas/MailboxRatelimit" + example: + value: "100" + frame: h + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/rl-domain/{domain}: + get: + summary: Get rate limits of domains + description: >- + Rate limit (outgoing messages per time frame) of a domain or alias + domain; `all` lists all that have one. + operationId: getDomainRatelimits + tags: + - Ratelimits + parameters: + - name: domain + in: path + required: true + description: "`all` or a domain or alias domain name" + schema: + type: string + example: example.org + responses: + "200": + description: The rate limit, or the list of rate limits (`all`) + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/DomainRatelimit" + - type: array + items: + allOf: + - $ref: "#/components/schemas/DomainRatelimit" + - type: object + properties: + domain: + type: string + description: Domain or alias domain + example: + value: "100" + frame: h + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/edit/rl-domain: + post: + summary: Set rate limits of domains + description: >- + Sets the rate limit of domains or alias domains. Needs the ACL + `ratelimit`. `rl_frame` is required also when removing the limit. + + + Messages: `rl_saved`; error `rl_timeframe`. + operationId: editDomainRatelimits + tags: + - Ratelimits + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + description: Domain or alias domain name, or a list of them + oneOf: + - type: string + - type: array + items: + type: string + attr: + type: object + required: + - rl_frame + properties: + rl_value: + type: [integer, string] + description: Messages per `rl_frame`; empty or 0 removes the limit + rl_frame: + type: string + enum: [s, m, h, d] + description: Time frame (second, minute, hour, day) + example: + items: + - example.org + attr: + rl_value: 100 + rl_frame: h + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/rl-mbox/all: + get: + tags: + - Ratelimits + summary: Get the rate limits of all mailboxes + operationId: getMailboxRatelimits + description: >- + The rate limits set on single mailboxes the caller manages (no domain + limits). `{}` if none. + responses: + "200": + description: List of rate limits + content: + application/json: + schema: + type: array + items: + allOf: + - $ref: "#/components/schemas/MailboxRatelimit" + - type: object + properties: + mailbox: + type: string + example: + - value: "100" + frame: h + mailbox: john.doe@example.org + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/edit/rl-mbox: + post: + tags: + - Ratelimits + summary: Set the rate limit of mailboxes + operationId: editMailboxRatelimit + description: >- + Sets the rate limit of mailboxes: `rl_value` messages per `rl_frame`. 0 + or empty removes it, but `rl_frame` must still be valid. Domain admins + need the ACL `ratelimit`. Answers `rl_saved` or `rl_timeframe`. + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + $ref: "#/components/schemas/MailboxItems" + attr: + type: object + required: + - rl_frame + properties: + rl_value: + type: [integer, string] + description: Number of messages, 0 or empty removes the limit + rl_frame: + type: string + enum: + - s + - m + - h + - d + description: Per second, minute, hour or day + example: + items: + - john.doe@example.org + attr: + rl_value: 100 + rl_frame: h + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/rlhash: + post: + tags: + - Ratelimits + summary: Reset a rate limit counter + operationId: deleteRatelimitHash + description: >- + Resets the counter of a rate-limited sender (`rl_hash` from + `get/logs/ratelimited`) so it can send again. Send one hash. Answers + `1` (not JSON) when deleted, else an empty body. + requestBody: + required: true + content: + application/json: + schema: + type: array + description: The hash + items: + type: string + pattern: "^RL[0-9A-Za-z=]+$" + example: + - RLkfx5cv4sq1i3ehpkz5bgdhcq9u9gkzj + responses: + "200": + description: "`1` if deleted, else an empty body" + content: + application/json: + schema: + type: integer + const: 1 + example: 1 + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/status/containers: + get: + summary: Get container status + description: State, start time and image of all mailcow containers (also stopped ones). + operationId: getContainerStatus + tags: + - Status + responses: + "200": + description: The containers, `null` if dockerapi cannot be reached + content: + application/json: + schema: + type: object + additionalProperties: + $ref: "#/components/schemas/ContainerStatus" + example: + dovecot-mailcow: + type: info + container: dovecot-mailcow + state: running + started_at: "2026-11-10T11:00:51.541059812Z" + image: ghcr.io/mailcow/dovecot:2.3.21.1-4 + postfix-mailcow: + type: info + container: postfix-mailcow + state: running + started_at: "2026-11-10T11:00:51.292779901Z" + image: ghcr.io/mailcow/postfix:1.80 + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/status/vmail: + get: + summary: Get mail storage status + description: Disk usage of the file system that holds the mail storage. + operationId: getVmailStatus + tags: + - Status + responses: + "200": + description: The disk usage (`df -H` values) + content: + application/json: + schema: + type: object + properties: + type: + type: string + const: info + disk: + type: string + description: Device + used: + type: string + description: Used space + total: + type: string + description: Size of the file system + used_percent: + type: string + description: Used space in percent + example: + type: info + disk: /dev/sda1 + used: 65G + total: 105G + used_percent: 66% + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/status/version: + get: + summary: Get mailcow version + description: The installed mailcow version, the release tag on master, else the short commit ID. + operationId: getVersion + tags: + - Status + responses: + "200": + description: The version + content: + application/json: + schema: + type: object + properties: + version: + type: [string, "null"] + description: Release tag or commit ID + example: + version: "2026-11" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/status/container/{id}: + get: + summary: Get container statistics + description: >- + Up to three Docker stats snapshots of one container, about five + seconds apart. Needs the full container ID, which the API does not + list; an unknown ID answers after 60 seconds with an error string. + operationId: getContainerStats + tags: + - Status + parameters: + - name: id + in: path + required: true + description: Full Docker container ID + schema: + type: string + example: 5d0f3cbb2a6e4f6c8e0e1c3b9a7d2f41b6c5e8a9d0f1e2c3b4a5968778695a4b + responses: + "200": + description: >- + Docker stats objects (see the Docker Engine API, `ContainerStats`), + oldest first; `false` without ID content: application/json: schema: type: array items: type: object + description: One Docker stats snapshot properties: - log: - type: array - description: contains request object - items: {} - msg: - type: array - items: {} - type: - enum: - - success - - danger - - error + read: type: string - description: OK - headers: {} - tags: - - Domains - description: >- - You can update one or more domains per request. You can also send just - attributes you want to change. - - Example: You can add domain names to items list and in attr object just - include `"active": "0"` to deactivate domains. - operationId: Update domain - requestBody: - content: - application/json: - schema: - example: - attr: - active: "1" - aliases: "400" - backupmx: "1" - defquota: "3072" - description: domain description - gal: "1" - mailboxes: "10" - maxquota: "10240" - quota: "10240" - relay_all_recipients: "0" - relayhost: "2" - tags: ["tag3", "tag4"] - items: domain.tld - properties: - attr: - properties: - active: - description: is domain active or not - type: boolean - aliases: - description: limit count of aliases associated with this domain - type: number - backupmx: - description: relay domain or not - type: boolean - defquota: - description: predefined mailbox quota in `add mailbox` form - type: number - description: - description: Description of domain - type: string - gal: - description: >- - is domain global address list active or not, it enables - shared contacts accross domain in SOGo webmail - type: boolean - mailboxes: - description: limit count of mailboxes associated with this domain - type: number - maxquota: - description: maximum quota per mailbox - type: number - quota: - description: maximum quota for this domain (for all mailboxes in sum) - type: number - relay_all_recipients: - description: >- - if not, them you have to create "dummy" mailbox for each - address to relay - type: boolean - relay_unknown_only: - description: Relay non-existing mailboxes only. Existing mailboxes will be delivered locally. - type: boolean - relayhost: - description: id of relayhost - type: number - rl_frame: - enum: - - s - - m - - h - - d - type: string - rl_value: - description: rate limit value - type: number - tags: - description: tags for this Domain - type: array - items: - type: string - type: object - items: - description: contains list of domain names you want update - type: array - items: - type: string - type: object - summary: Update domain - /api/v1/edit/domain/footer: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - mailbox - - edit - - domain_wide_footer - - domains: - - mailcow.tld - html: "
foo {= foo =}" - plain: "- - You can update the footer of one or more domains per request. - operationId: Update domain wide footer - requestBody: - content: - application/json: - schema: - example: - attr: - html: "
foo {= foo =}" - plain: "foo {= foo =}" - mbox_exclude: - - moo@mailcow.tld - items: mailcow.tld - properties: - attr: - properties: - html: - description: Footer text in HTML format - type: string - plain: - description: Footer text in PLAIN text format - type: string - mbox_exclude: - description: Array of mailboxes to exclude from domain wide footer - type: object - type: object - items: - description: contains a list of domain names where you want to update the footer - type: array - items: - type: string - type: object - summary: Update domain wide footer - /api/v1/edit/fail2ban: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - "*/*": - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Fail2Ban - description: >- - Using this endpoint you can edit the Fail2Ban config and black or - whitelist new ips. - operationId: Edit Fail2Ban - requestBody: - content: - application/json: - schema: - example: - attr: - ban_time: "86400" - ban_time_increment: "1" - blacklist: "10.100.6.5/32,10.100.8.4/32" - max_attempts: "5" - max_ban_time: "86400" - netban_ipv4: "24" - netban_ipv6: "64" - retry_window: "600" - whitelist: mailcow.tld - items: none - properties: - attr: - description: array containing the fail2ban settings - properties: - backlist: - description: the backlisted ips or hostnames separated by comma - type: string - ban_time: - description: the time an ip should be banned - type: number - ban_time_increment: - description: if the time of the ban should increase each time - type: boolean - max_attempts: - description: the maximum numbe of wrong logins before a ip is banned - type: number - max_ban_time: - description: the maximum time an ip should be banned - type: number - netban_ipv4: - description: the networks mask to ban for ipv4 - type: number - netban_ipv6: - description: the networks mask to ban for ipv6 - type: number - retry_window: - description: >- - the maximum time in which a ip as to login with false - credentials to be banned - type: number - whitelist: - description: whitelisted ips or hostnames sepereated by comma - type: string - type: object - items: - description: has to be none - type: object - summary: Edit Fail2Ban - /api/v1/edit/mailbox: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - mailbox - - edit - - mailbox - - active: "1" - force_pw_update: "0" - force_tfa: "0" - name: Full name - password: "*" - password2: "*" - quota: "3072" - sender_acl: - - default - - info@domain2.tld - - domain3.tld - - "*" - sogo_access: "1" - username: - - info@domain.tld - tags: ["tag3", "tag4"] - - null - msg: - - mailbox_modified - - info@domain.tld - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Mailboxes - description: >- - You can update one or more mailboxes per request. You can also send just - attributes you want to change - operationId: Update mailbox - requestBody: - content: - application/json: - schema: - example: - attr: - active: "1" - force_pw_update: "0" - force_tfa: "0" - name: Full name - authsource: mailcow - password: "" - password2: "" - quota: "3072" - sender_acl: - - default - - info@domain2.tld - - domain3.tld - - "*" - sogo_access: "1" - tags: ["tag3", "tag4"] - items: - - info@domain.tld - properties: - attr: - properties: - active: - description: is mailbox active or not - type: boolean - force_pw_update: - description: force user to change password on next login - type: boolean - force_tfa: - description: force 2FA enrollment at login - type: boolean + description: Time of the snapshot name: - description: Full name of the mailbox user type: string - authsource: - description: Specifies the authentication source for the mailbox. + id: type: string - enum: [mailcow, ldap, keycloak, generic-oidc] - password2: - description: new mailbox password for confirmation - type: string - password: - description: new mailbox password when using `mailcow` as the authentication source. - type: string - quota: - description: mailbox quota - type: number - sender_acl: - description: list of allowed send from addresses + cpu_stats: type: object - sogo_access: - description: is access to SOGo webmail active or not - type: boolean - shared: - description: shared mailbox, no login of its own (IMAP, SMTP, SOGo, app passwords, mailcow UI) - type: boolean - type: object - items: - description: contains list of mailboxes you want update - type: object - type: object - summary: Update mailbox - /api/v1/edit/mailbox/custom-attribute: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - mailbox - - edit - - mailbox_custom_attribute - - mailboxes: - - moo@mailcow.tld - attribute: - - role - - foo - value: - - cow - - bar - - null - msg: - - mailbox_modified - - moo@mailcow.tld - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Mailboxes - description: >- - You can update custom attributes of one or more mailboxes per request. - operationId: Update mailbox custom attributes - requestBody: - content: - application/json: - schema: - example: - attr: - attribute: - - role - - foo - value: - - cow - - bar - items: - - moo@mailcow.tld - properties: - attr: - properties: - attribute: - description: Array of attribute keys + precpu_stats: type: object - value: - description: Array of attribute values + memory_stats: type: object - type: object - items: - description: contains list of mailboxes you want update - type: object - type: object - summary: Update mailbox custom attributes - /api/v1/edit/mailbox-group: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - mailbox_group - - edit - - group - - id: - - "7" - add_members: - - carol@example.org - msg: - - group_modified - - Sales - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - warning - - error - type: string - type: object - description: OK - headers: {} - tags: - - Groups - description: >- - Update groups. Attributes you do not send keep their value. Members - synced from the identity provider cannot be removed here - (group_member_idp). - operationId: Update groups - requestBody: - content: - application/json: - schema: - example: - items: - - "7" - attr: - add_members: - - carol@example.org - properties: - attr: - properties: - name: - description: unique per domain, max. 100 characters - type: string - description: - description: max. 255 characters - type: string - local_part: - description: local part of the group address (domain of the group), empty = no address - type: string - address: - description: full group address instead of local_part, empty = no address - type: string - members: - description: >- - mailboxes (array or list separated by commas, spaces or - newlines); replaces the manual members you may access - type: array - send_as: - description: addresses (mailbox or alias) or @domain the members may send as - type: array - sender_allowed: - description: members may send as the group address - type: boolean - sogo_visible: - description: show the group address as SOGo identity (needs sender_allowed) - type: boolean - internal: - description: only accept mail from senders of the domain - type: boolean - template_id: - description: mailbox template applied to the members (admin only), empty = none - type: number - priority: - description: highest priority wins if a mailbox is in several groups with a template (admin only) - type: number - active: - type: boolean - add_members: - description: mailboxes to add - type: array - remove_members: - description: manual members to remove - type: array - reapply_template: - description: apply the effective templates to all members again (admin only) - type: boolean - imap_grants: - description: >- - replaces the mailbox access of the members (Dovecot ACL on every folder of the - mailbox, shown as Shared/); rights read, write or full; you need access - to each mailbox; subscribe = the group-grants cron subscribes the folders for every - member once (within 15 minutes) - type: array - items: - type: object - properties: - owner: - type: string - rights: - type: string - enum: [read, write, full] - subscribe: - type: boolean - default: false - example: - - owner: shared@example.org - rights: write - subscribe: true - sogo_grants: - description: >- - replaces the SOGo folders shared with the members; folder = SOGo folder ID - (default personal); pending until the mailbox opened SOGo once; subscribe = the - group-grants cron subscribes every member once (within 15 minutes) - type: array - items: - type: object - properties: - owner: - type: string - type: - type: string - enum: [Calendar, Contacts] - folder: - type: string - default: personal - access: - type: string - enum: [read, write] - subscribe: - type: boolean - default: false - example: - - owner: shared@example.org - type: Calendar - access: write - subscribe: true - type: object - items: - description: contains list of group IDs you want to update - type: object - type: object - summary: Update groups - /api/v1/edit/identity-provider-sync: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - identity_provider - - edit - - sync - - mode: preview - msg: iam_sync_requested - type: success - description: OK - headers: {} - tags: - - Identity Provider - description: >- - Queues a sync run of the Identity Provider (Keycloak and LDAP, admins only). The identity-sync cron - starts it within a minute. `preview` lists the changes without applying them, `run` applies them, - `force` applies them without the change limit (offboarding_limit). - operationId: Request identity sync run - requestBody: - content: - application/json: - schema: - example: - items: - - sync - attr: - mode: preview - properties: - items: - type: array - default: ["sync"] - attr: - type: object - properties: - mode: - type: string - enum: [preview, run, force] - default: run - type: object - summary: Request identity sync run - /api/v1/edit/mailq: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - msg: Task completed - type: success - description: OK - headers: {} - tags: - - Queue Manager - description: >- - Using this API you can flush the current mail queue. This will try to - deliver all mails currently in it. - - This API uses the command: `postqueue -f` - operationId: Flush Queue - requestBody: - content: - application/json: - schema: - example: - action: flush - properties: - action: - description: use flush to flush the mail queue - type: string - type: object - summary: Flush Queue - /api/v1/edit/pushover: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - pushover - - edit - - active: "0" - evaluate_x_prio: "0" - key: 21e8918e1jksdjcpis712 - only_x_prio: "0" - sound: "pushover" - senders: "" - senders_regex: "" - text: "" - title: Mail - token: 9023e2ohcwed27d1idu2 - username: - - info@domain.tld - msg: pushover_settings_edited - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Mailboxes - description: >- - Using this endpoint it is possible to update the pushover settings for - mailboxes - operationId: Update Pushover settings - requestBody: - content: - application/json: - schema: - example: - attr: - active: "0" - evaluate_x_prio: "0" - key: 21e8918e1jksdjcpis712 - only_x_prio: "0" - sound: "pushover" - senders: "" - senders_regex: "" - text: "" - title: Mail - token: 9023e2ohcwed27d1idu2 - items: info@domain.tld - properties: - attr: - properties: - active: - description: Enables pushover 1 disable pushover 0 - type: number - evaluate_x_prio: - description: Send the Push with High priority - type: number - key: - description: Pushover key - type: string - only_x_prio: - description: Only send push for prio mails - type: number - sound: - description: Set notification sound - type: string - senders: - description: Only send push for emails from these senders - type: string - senders_regex: - description: Regex to match senders for which a push will be send - type: string - text: - description: Custom push noficiation text - type: string - title: - description: Push title - type: string - token: - description: Pushover token - type: string - type: object - items: - description: contains list of mailboxes you want to delete - type: object - type: object - summary: Update Pushover settings - /api/v1/edit/quarantine_notification: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - description: OK - headers: {} - tags: - - Mailboxes - description: You can update one or more mailboxes per request. - operationId: Quarantine Notifications - requestBody: - content: - application/json: - schema: - example: - attr: - quarantine_notification: hourly - items: - anyOf: - - mailbox1@domain.tld - - mailbox2@domain.tld - properties: - attr: - properties: - quarantine_notification: - description: recurrence - enum: - - hourly - - daily - - weekly - - never - type: string - type: object - items: - description: >- - contains list of mailboxes you want set qurantine - notifications - type: object - type: object - summary: Quarantine Notifications - /api/v1/edit/syncjob: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - syncjob - - edit - - job - - id: - - "1" - active: "0" - msg: - - mailbox_modified - - mailbox@domain.tld - type: success - schema: - properties: - log: - description: contains request object (secrets are masked as "*") - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Sync jobs - description: >- - Update one or more sync jobs per request. Only send the attributes you - want to change. Requires the `syncjobs` ACL. - operationId: Update sync job - requestBody: - content: - application/json: - schema: - example: - attr: - active: "1" - source_id: "3" - user1: username - mins_interval: "20" - custom_params: - - {o: folder, v: INBOX} - items: - - "1" - properties: - attr: - properties: - source_id: - description: >- - id of a sync source visible to the caller (`GET /api/v1/get/syncjob_source/all`). - Visibility is only checked when the source changes. - type: integer - user1: - description: >- - remote username at the source. For XOAUTH2 authorization_code sources - a token for (source_id, local mailbox, user1) must exist, i.e. the - mailbox owner must have signed in via `/syncjob-oauth` first - (`imapsync_source_oauth_connect_required` otherwise). For XOAUTH2 - client_credentials sources user1 may only be changed by callers who can - see the source (`access_denied` otherwise); the other fields stay editable. - type: string - password1: - description: >- - remote password; empty keeps the stored one. Required when the job - is moved to a non-XOAUTH2 source and no password is stored. - type: string - mins_interval: - description: sync interval in minutes (1-43800) - type: number - subfolder2: - description: sync into subfolder on destination (empty = do not use subfolder) - type: string - maxage: - description: only sync messages up to this age in days (0 = ignore age) - type: number - maxbytespersecond: - description: per-job bandwidth limit in bytes/s (0 = unlimited, capped by the global limit) - type: number - timeout1: - description: timeout for connection to remote host - type: number - timeout2: - description: timeout for connection to local host - type: number - exclude: - description: exclude objects (regex) - type: string - custom_params: - description: >- - Allowlisted imapsync options as a list of option/value pairs (must be - an array). - `o` is the option name without leading dashes (see `GET - /api/v1/get/syncjob_options`), `v` the value. The allowlist decides - per option: `true` = a non-empty value is required, `false` = flag - without value (`v` must be empty), string = regular expression the - whole value must match. Options taking file paths are never allowed. - Values are passed to imapsync as a single argument. - type: array - items: - type: object - properties: - o: - type: string - v: - type: string - prio: - description: >- - priority (admin only, ignored otherwise). Due jobs run ordered by - prio DESC, never-run first, last_run ASC, id ASC. - type: number - last_run: - description: any value resets last_run (job becomes due) - type: string - success: - description: any value resets the last result - type: string - delete2duplicates: - description: delete duplicates on destination (--delete2duplicates) - type: boolean - delete1: - description: delete from source when completed (--delete1) - type: boolean - delete2: - description: delete messages on destination that are not on source (--delete2) - type: boolean - automap: - description: try to automap folders ("Sent items", "Sent" => "Sent" etc.) (--automap) - type: boolean - skipcrossduplicates: - description: skip duplicate messages across folders (first come, first serve) (--skipcrossduplicates) - type: boolean - subscribeall: - description: subscribe all folders (--subscribeall) - type: boolean - dry: - description: dry run, nothing is changed (--dry) - type: boolean - active: - description: enables or disables the sync job - type: boolean - host1: - description: >- - Removed. Host, port, encryption and authentication now come from - the sync source (`source_id`, see `/api/v1/add/syncjob_source`). - The attribute is ignored. - deprecated: true - type: string - port1: - description: >- - Removed. Host, port, encryption and authentication now come from - the sync source (`source_id`, see `/api/v1/add/syncjob_source`). - The attribute is ignored. - deprecated: true - type: string - enc1: - description: >- - Removed. Host, port, encryption and authentication now come from - the sync source (`source_id`, see `/api/v1/add/syncjob_source`). - The attribute is ignored. - deprecated: true - type: string - authmech1: - description: >- - Removed. Host, port, encryption and authentication now come from - the sync source (`source_id`, see `/api/v1/add/syncjob_source`). - The attribute is ignored. - deprecated: true - type: string - order_id: - description: Removed, use `prio` (admin) or `/api/v1/edit/syncjob/run_next`. Ignored. - deprecated: true - type: number - type: object - items: - description: list of sync job ids to update - type: array - items: - type: string - type: object - summary: Update sync job - /api/v1/edit/syncjob/run_next: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - syncjob - - edit - - run_next - - id: - - "1" - msg: - - imapsync_run_next_done - - 1 - type: success - schema: - properties: - log: - description: contains request object (secrets are masked as "*") - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Sync jobs - description: >- - Admin only. Moves the given jobs to the front of the queue: `prio` is set - above the current maximum and `last_run` is cleared, so the runner picks - them next. Jobs that are currently running are rejected with - `imapsync_job_running` (one message per job), the others are moved. - The jobs are locked while they are moved, so a job the runner claims at - the same time is reported as running instead of being counted. - operationId: Run sync job next - summary: Run sync job next - requestBody: - content: - application/json: - schema: - example: - items: - - "1" - attr: {} - properties: - items: - description: list of sync job ids - type: array - items: - type: string - attr: - description: unused, send an empty object - type: object - type: object - /api/v1/edit/syncjob_source: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - syncjob - - edit - - source - - id: - - "3" - name: Example import - oauth_client_secret: "*" - msg: - - imapsync_source_modified - - Example import - type: success - schema: - properties: - log: - description: contains request object (secrets are masked as "*") - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Sync jobs - description: >- - Update one or more sync sources (creator, admins, and domain admins for - sources created by mailboxes of their domains). Fields not provided are - left unchanged. All checks run before anything is written; a rejected - edit changes nothing. Requires the `syncjobs` ACL. - operationId: Update sync job source - summary: Update sync job source - requestBody: - content: - application/json: - schema: - example: - items: - - "3" - attr: - name: Example import - host: imap.example.org - port: "993" - enc: SSL - auth_type: PLAIN - active: "1" - properties: - attr: - properties: - name: - description: >- - source name, max. 100 characters, unique per creator - type: string - description: - description: >- - free text shown in the UI, max. 255 characters - type: string - host: - description: >- - remote IMAP host (hostname or IP, max. 253 characters). - `host1` is accepted as an alias. Host, port and enc are only validated - when they change (migrated legacy values stay editable). - type: string - port: - description: >- - remote IMAP port (1-65535). `port1` is accepted as an alias. - type: integer - enc: - description: >- - TLS (STARTTLS) / SSL / PLAIN. `enc1` is accepted as an alias. - type: string - enum: - - TLS - - SSL - - PLAIN - verify_cert: - description: >- - 1 = check the server certificate (SSL and STARTTLS, default), 0 = do not check - it (self-signed, expired or not matching the host). Turning the check off - needs access to all sync jobs of the source, like changing the server. - type: integer - enum: - - 0 - - 1 - auth_type: - description: >- - authentication mechanism; PLAIN/LOGIN/CRAM-MD5 use the per-job - password, XOAUTH2 uses OAuth2 tokens. XOAUTH2 sources can only be created - and edited by admins and domain admins (`access_denied` for users); users - can use XOAUTH2 sources visible to them in their sync jobs. - type: string - enum: - - PLAIN - - LOGIN - - CRAM-MD5 - - XOAUTH2 - oauth_flow: - description: >- - XOAUTH2 grant type (default client_credentials). client_credentials - sources are always private to their creator (scope is forced to `user` - without targets). - type: string - enum: - - client_credentials - - authorization_code - oauth_authorize_endpoint: - description: >- - authorize URL, required for authorization_code. Must be an https:// URL - without credentials and with a valid hostname - type: string - oauth_token_endpoint: - description: >- - token URL, required for XOAUTH2. Must be an https:// URL without credentials and with a valid hostname - type: string - oauth_userinfo_endpoint: - description: >- - optional identity endpoint for authorization_code (used when the token - response has no usable id_token). Must be an https:// URL without credentials and with a valid hostname - type: string - oauth_client_id: - description: >- - OAuth2 client id, required for XOAUTH2 - type: string - oauth_client_secret: - description: >- - OAuth2 client secret; empty keeps the stored one. Changing auth_type, - oauth_flow, oauth_token_endpoint, oauth_client_id, host, port or enc drops - the cached source token and all per-user tokens of the source (users have - to sign in again). - type: string - oauth_scope: - description: >- - OAuth2 scope, required for XOAUTH2 - type: string - oauth_extra_params: - description: >- - optional extra token request parameters: a JSON object with scalar values, - sent either as object or as JSON string (empty = none). They never - override the grant fields. - oneOf: - - type: object - additionalProperties: true - - type: string - scope: - description: >- - visibility: `all` (admins only), `domain` (needs `domains`) or `user` - (listed `users`; no targets = private to the creator). Users always - create private sources. Targets are only rewritten when `scope` is sent. - type: string - enum: - - all - - domain - - user - domains: - description: target domains when scope is domain - type: array - items: - type: string - users: - description: target mailboxes when scope is user - type: array - items: - type: string - active: - description: >- - enables or disables the source - type: boolean - type: object - items: - description: list of source ids to update - type: array - items: - type: string - type: object - /api/v1/edit/syncjob_source/refresh_token: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - syncjob - - edit - - refresh_token - - id: - - "3" - msg: - - imapsync_source_token_refreshed - - Example import - type: success - schema: - properties: - log: - description: contains request object (secrets are masked as "*") - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Sync jobs - description: >- - Force an OAuth2 access-token refresh for a XOAUTH2 client_credentials - source (other sources: `imapsync_source_refresh_unsupported`). Requires - edit rights on the source and the `syncjobs` ACL. - operationId: Refresh sync job source token - summary: Refresh sync job source token - requestBody: - content: - application/json: - schema: - example: - items: - - "3" - properties: - items: - description: source id (only the first one is used) - type: array - items: - type: string - type: object - /api/v1/edit/imapsync_settings: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - syncjob - - edit - - settings - - max_parallel: "4" - max_kb_per_second: "2000" - msg: max_parallel_saved - type: success - schema: - properties: - log: - description: contains request object (secrets are masked as "*") - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Sync jobs - description: >- - Update global sync job settings (admin only). `max_parallel` is the - number of imapsync processes that may run concurrently (1-32); - `max_kb_per_second` is a per-process bandwidth cap in KB/s (0 = - unlimited, max. 10485760 = 10 GiB/s), stored internally in bytes/s. - operationId: Update sync job settings - summary: Update sync job settings - requestBody: - content: - application/json: - schema: - example: - attr: - max_parallel: "4" - max_kb_per_second: "2000" - properties: - attr: - properties: - max_parallel: - description: max. concurrent sync processes (1-32) - type: number - max_kb_per_second: - description: bandwidth limit per process in KB/s (0 = unlimited, max. 10485760) - type: number - type: object - type: object - /api/v1/edit/user-acl: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - log: - - acl - - edit - - user - - user_acl: - - spam_alias - - tls_policy - - spam_score - - spam_policy - - delimiter_action - - syncjobs - - eas_reset - - quarantine - - sogo_profile_reset - - quarantine_attachments - - quarantine_notification - - app_passwds - - pushover - username: - - info@domain.tld - msg: - - acl_saved - - info@domain.tld - type: success - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Mailboxes - description: Using this endpoints its possible to update the ACL's for mailboxes - operationId: Update mailbox ACL - requestBody: - content: - application/json: - schema: - example: - attr: - user_acl: - - spam_alias - - tls_policy - - spam_score - - spam_policy - - delimiter_action - - syncjobs - - eas_reset - - quarantine - - sogo_profile_reset - - quarantine_attachments - - quarantine_notification - - app_passwds - - pushover - items: info@domain.tld - properties: - attr: - properties: - user_acl: - description: contains a list of active user acls + blkio_stats: type: object - type: object - items: - description: contains list of mailboxes you want to delete - type: object - type: object - summary: Update mailbox ACL - "/api/v1/get/alias/{id}": - get: - parameters: - - description: id of entry you want to get - example: all - in: path - name: id - required: true - schema: - enum: - - all - - "1" - - "2" - - "5" - - "10" - type: string - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - active: "1" - address: alias@domain.tld - created: "2019-04-04 19:29:49" - domain: domain.tld - goto: destination@domain.tld - id: 6 - in_primary_domain: "" - is_catch_all: 0 - modified: null - private_comment: null - public_comment: null - - active: "1" - address: "@domain.tld" - created: "2019-04-27 13:42:39" - domain: domain.tld - goto: destination@domain.tld - id: 10 - in_primary_domain: "" - is_catch_all: 1 - modified: null - private_comment: null - public_comment: null - description: OK - headers: {} - tags: - - Aliases - description: You can list mailbox aliases existing in system. - operationId: Get aliases - summary: Get aliases - "/api/v1/get/time_limited_aliases/{mailbox}": - get: - parameters: - - description: mailbox you want to get aliasses from - example: domain.tld - in: path - schema: - type: string - name: mailbox - required: true - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - address: alias@domain.tld - goto: destination@domain.tld - validity: 1668251246 - created: "2021-11-12 12:07:26" - modified: null - description: OK - headers: {} - tags: - - Aliases - description: You can list time limited mailbox aliases existing in system. - operationId: Get time limited aliases - summary: Get time limited aliases - "/api/v1/get/api-key/{id}": - get: - parameters: - - description: id of entry you want to get - example: all - in: path - name: id - required: true - schema: - enum: - - all - - "1" - - "2" - type: string - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - id: 1 - description: API_KEY - access: rw - api_key: 1A2B3C-4D5E6F-7A8B9C-0D1E2F-3A4B5C - allow_from: - - 192.0.2.10 - skip_ip_check: 0 - service: 1 - active: 1 - created: "2026-10-22 12:00:00" - modified: null - description: OK - headers: {} - tags: - - API Keys - description: >- - Admin only, not with a read-only API key (`{}` otherwise). Returns all - API keys incl. their values, service keys from mailcow.conf - (`service: 1`) first. - operationId: Get API keys - summary: Get API keys - "/api/v1/get/app-passwd/all/{mailbox}": - get: - parameters: - - description: mailbox of entry you want to get - example: hello@mailcow.email - in: path - name: mailbox - required: true - schema: - enum: - - hello@mailcow.email - type: string - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - active: "1" - created: "2019-12-21 16:04:55" - domain: mailcow.email - id: 2 - mailbox: hello@mailcow.email - modified: null - name: emclient - description: OK - headers: {} - tags: - - App Passwords - description: >- - Using this endpoint you can get all app passwords from a specific - mailbox. - operationId: Get App Password - summary: Get App Password - "/api/v1/get/bcc/{id}": - get: - parameters: - - description: id of entry you want to get - example: all - in: path - name: id - required: true - schema: - enum: - - all - - "1" - - "2" - - "5" - - "10" - type: string - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - active: "1" - bcc_dest: bcc@awesomecow.tld - created: "2019-10-02 21:44:34" - domain: mailcow.tld - id: 3 - local_dest: "@mailcow.tld" - modified: null - type: sender - description: OK - headers: {} - tags: - - Address Rewriting - description: Using this endpoint you can get all BCC maps. - operationId: Get BCC Map - summary: Get BCC Map - "/api/v1/get/dkim/{domain}": - get: - parameters: - - description: name of domain - in: path - name: domain - required: true - schema: - type: string - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - dkim_selector: dkim - dkim_txt: >- - v=DKIM1;k=rsa;t=s;s=email;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA21tUSjyasQy/hJmVjPnlRGfzx6TPhYj8mXY9DVOzSAE64Gddw/GnE/GcCR6WXNT23u9q4zPnz1IPoNt5kFOps8vg/iNqrcH++494noaZuYyFPPFnebkfryO4EvEyxC/c66qts+gnOUml+M8uv5WObBJld2gG12jLwFM0263J/N6J8LuUsaXOB2uCIfx8Nf4zjuJ6Ieez2uyHNK5dXjDLfKA4mTr+EEK6W6e34M4KN1liWM6r9Oy5S1FlLrD42VpURxxBZtBiEtaJPEKSQuk6GQz8ihu7W20Yr53tyCdaORu8dhxXVUWVf+GjuuMEdAmQCjYkarXdYCrt56Psw703kwIDAQAB - length: "2048" - privkey: "" - pubkey: >- - MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA21tUSjyasQy/hJmVjPnlRGfzx6TPhYj8mXY9DVOzSAE64Gddw/GnE/GcCR6WXNT23u9q4zPnz1IPoNt5kFOps8vg/iNqrcH++494noaZuYyFPPFnebkfryO4EvEyxC/c66qts+gnOUml+M8uv5WObBJld2gG12jLwFM0263J/N6J8LuUsaXOB2uCIfx8Nf4zjuJ6Ieez2uyHNK5dXjDLfKA4mTr+EEK6W6e34M4KN1liWM6r9Oy5S1FlLrD42VpURxxBZtBiEtaJPEKSQuk6GQz8ihu7W20Yr53tyCdaORu8dhxXVUWVf+GjuuMEdAmQCjYkarXdYCrt56Psw703kwIDAQAB - description: OK - headers: {} - tags: - - DKIM - description: >- - Using this endpoint you can get the DKIM public key for a specific - domain. - operationId: Get DKIM Key - summary: Get DKIM Key - /api/v1/get/domain-admin/all: - get: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - active: "1" - created: "2019-10-02 10:29:41" - selected_domains: - - mailcow.tld - tfa_active: "0" - unselected_domains: - - awesomemailcow.de - - mailcowisgreat.de - username: testadmin - description: OK - headers: {} - tags: - - Domain admin - description: "" - operationId: Get Domain Admins - summary: Get Domain Admins - "/api/v1/get/domain/{id}": - get: - parameters: - - description: id of entry you want to get - example: all - in: path - name: id - required: true - schema: - enum: - - all - - mailcow.tld - type: string - - description: comma seperated list of tags to filter by - example: "tag1,tag2" - in: query - name: tags - required: false - schema: - type: string - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - active: "1" - aliases_in_domain: 0 - aliases_left: 400 - backupmx: "0" - bytes_total: "5076666944" - def_new_mailbox_quota: 3221225472 - def_quota_for_mbox: 3221225472 - description: Some description - domain_name: domain.tld - gal: "0" - max_new_mailbox_quota: 10737418240 - max_num_aliases_for_domain: 400 - max_num_mboxes_for_domain: 10 - max_quota_for_domain: 10737418240 - max_quota_for_mbox: 10737418240 - mboxes_in_domain: 0 - mboxes_left: 10 - msgs_total: "172440" - quota_used_in_domain: "0" - relay_all_recipients: "0" - relayhost: "0" - rl: false - tags: ["tag1", "tag2"] - - active: "1" - aliases_in_domain: 0 - aliases_left: 400 - backupmx: "1" - bytes_total: "5076666944" - def_new_mailbox_quota: 3221225472 - def_quota_for_mbox: 3221225472 - description: domain description - domain_name: domain2.tld - gal: "0" - max_new_mailbox_quota: 10737418240 - max_num_aliases_for_domain: 400 - max_num_mboxes_for_domain: 10 - max_quota_for_domain: 10737418240 - max_quota_for_mbox: 10737418240 - mboxes_in_domain: 0 - mboxes_left: 10 - msgs_total: "172440" - quota_used_in_domain: "0" - relay_all_recipients: "0" - relayhost: "0" - rl: false - tags: ["tag3", "tag4"] - description: OK - headers: {} - tags: - - Domains - description: You can list all domains existing in system. - operationId: Get domains - summary: Get domains - /api/v1/get/fail2ban: - get: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - ban_time: 604800 - ban_time_increment: 1 - blacklist: |- - 45.82.153.37/32 - 92.118.38.52/32 - max_attempts: 1 - max_ban_time: 604800 - netban_ipv4: 32 - netban_ipv6: 128 - perm_bans: - - 45.82.153.37/32 - - 92.118.38.52/32 - retry_window: 7200 - whitelist: 1.1.1.1 - description: OK - headers: {} - tags: - - Fail2Ban - description: Gets the current Fail2Ban configuration. - operationId: Get Fail2Ban Config - summary: Get Fail2Ban Config - /api/v1/get/fwdhost/all: - get: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - host: 5.1.76.202 - keep_spam: "yes" - source: hosted.mailcow.de - - host: "2a00:f820:417::202" - keep_spam: "yes" - source: hosted.mailcow.de - description: OK - headers: {} - tags: - - Fordwarding Hosts - description: You can list all Forwarding Hosts in your mailcow. - operationId: Get Forwarding Hosts - summary: Get Forwarding Hosts - "/api/v1/get/logs/acme/{count}": - get: - parameters: - - description: Number of logs to return - in: path - name: count - required: true - schema: - type: number - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - message: >- - Certificate validation done, neither changed nor due for - renewal, sleeping for another day. - time: "1569927728" - description: OK - headers: {} - tags: - - Logs - description: >- - This Api endpoint lists all ACME logs from issued Lets Enctypts - certificates. - - Tip: You can limit how many logs you want to get by using `/` at - the end of the api url. - operationId: Get ACME logs - summary: Get ACME logs - "/api/v1/get/logs/api/{count}": - get: - parameters: - - description: Number of logs to return - in: path - name: count - required: true - schema: - type: number - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - data: "" - method: GET - remote: 1.1.1.1 - time: 1569939001 - uri: /api/v1/get/logs/api/2 - description: OK - headers: {} - tags: - - Logs - description: >- - This Api endpoint lists all Api logs. - - Tip: You can limit how many logs you want to get by using `/` at - the end of the api url. - operationId: Get Api logs - summary: Get Api logs - "/api/v1/get/logs/autodiscover/{count}": - get: - parameters: - - description: Number of logs to return - in: path - name: count - required: true - schema: - type: number - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - service: activesync - time: 1569684212 - ua: >- - Microsoft Office/16.0 (Windows NT 6.2; MAPICPL - 16.0.11328; Pro) - user: awesome@mailcow.de - description: OK - headers: {} - tags: - - Logs - description: >- - This Api endpoint lists all Autodiscover logs. - - Tip: You can limit how many logs you want to get by using `/` at - the end of the api url. - operationId: Get Autodiscover logs - summary: Get Autodiscover logs - "/api/v1/get/logs/dovecot/{count}": - get: - parameters: - - description: Number of logs to return - in: path - name: count - required: true - schema: - type: number - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - message: >- - managesieve-login: Disconnected (no auth attempts in 0 - secs): user=<>, rip=172.22.1.3, lip=172.22.1.250 - priority: info - program: dovecot - time: "1569938740" - description: OK - headers: {} - tags: - - Logs - description: >- - This Api endpoint lists all Dovecot logs. - - Tip: You can limit how many logs you want to get by using `/` at - the end of the api url. - operationId: Get Dovecot logs - summary: Get Dovecot logs - "/api/v1/get/logs/netfilter/{count}": - get: - parameters: - - description: Number of logs to return - in: path - name: count - required: true - schema: - type: number - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - message: "Whitelist was changed, it has 1 entries" - priority: info - time: 1569754911 - - message: Add host/network 1.1.1.1/32 to blacklist - priority: crit - time: 1569754911 - description: OK - headers: {} - tags: - - Logs - description: >- - This Api endpoint lists all Netfilter logs. - - Tip: You can limit how many logs you want to get by using `/` at - the end of the api url. - operationId: Get Netfilter logs - summary: Get Netfilter logs - "/api/v1/get/logs/postfix/{count}": - get: - parameters: - - description: Number of logs to return - in: path - name: count - required: true - schema: - type: number - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - message: "EF1711500458: removed" - priority: info - program: postfix/qmgr - time: "1569937433" - description: OK - headers: {} - tags: - - Logs - description: >- - This Api endpoint lists all Postfix logs. - - Tip: You can limit how many logs you want to get by using `/` at - the end of the api url. - operationId: Get Postfix logs - summary: Get Postfix logs - "/api/v1/get/logs/ratelimited/{count}": - get: - parameters: - - description: Number of logs to return - in: path - name: count - required: true - schema: - type: number - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - from: awesome@mailcow.email - header_from: '"Awesome" ' - header_subject: Mailcow is amazing - ip: 172.22.1.248 - message_id: 6a-5d892500-7-240abd80@90879116 - qid: E3CF91500458 - rcpt: hello@mailcow.email - rl_hash: RLsdz3tuabozgd4oacbdh8kc78 - rl_info: mailcow(RLsdz3tuabozgd4oacbdh8kc78) - rl_name: mailcow - time: 1569269003 - user: awesome@mailcow.email - description: OK - headers: {} - tags: - - Logs - description: >- - This Api endpoint lists all Ratelimit logs. - - Tip: You can limit how many logs you want to get by using `/` at - the end of the api url. - operationId: Get Ratelimit logs - summary: Get Ratelimit logs - "/api/v1/get/logs/rspamd-history/{count}": - get: - parameters: - - description: Number of logs to return - in: path - name: count - required: true - schema: - type: number - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - description: OK - headers: {} - tags: - - Logs - description: >- - This Api endpoint lists all Rspamd logs. - - Tip: You can limit how many logs you want to get by using `/` at - the end of the api url. - operationId: Get Rspamd logs - summary: Get Rspamd logs - "/api/v1/get/logs/sogo/{count}": - get: - parameters: - - description: Number of logs to return - in: path - name: count - required: true - schema: - type: number - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - message: >- - [109]: - mailcowdockerized_watchdog-mailcow_1.mailcowdockerized_mailcow-network - "GET /SOGo.index/ HTTP/1.1" 200 2531/0 0.005 - - 0 - priority: notice - program: sogod - time: "1569938874" - description: OK - headers: {} - tags: - - Logs - description: >- - This Api endpoint lists all SOGo logs. - - Tip: You can limit how many logs you want to get by using `/` at - the end of the api url. - operationId: Get SOGo logs - summary: Get SOGo logs - "/api/v1/get/logs/watchdog/{count}": - get: - parameters: - - description: Number of logs to return - in: path - name: count - required: true - schema: - type: number - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - hpdiff: "0" - hpnow: "1" - hptotal: "1" - lvl: "100" - service: Fail2ban - time: "1569938958" - - hpdiff: "0" - hpnow: "5" - hptotal: "5" - lvl: "100" - service: Rspamd - time: "1569938956" - description: OK - headers: {} - tags: - - Logs - description: >- - This Api endpoint lists all Watchdog logs. - - Tip: You can limit how many logs you want to get by using `/` at - the end of the api url. - operationId: Get Watchdog logs - summary: Get Watchdog logs - "/api/v1/get/mailbox/{id}": - get: - parameters: - - description: id of entry you want to get - example: all - in: path - name: id - required: true - schema: - enum: - - all - - user@domain.tld - type: string - - description: comma seperated list of tags to filter by - example: "tag1,tag2" - in: query - name: tags - required: false - schema: - type: string - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - active: "1" - attributes: - force_pw_update: "0" - force_tfa: "0" - mailbox_format: "maildir:" - quarantine_notification: never - sogo_access: "1" - tls_enforce_in: "0" - tls_enforce_out: "0" - domain: doman3.tld - is_relayed: 0 - local_part: info - max_new_quota: 10737418240 - messages: 0 - name: Full name - percent_class: success - percent_in_use: 0 - quota: 3221225472 - quota_used: 0 - rl: false - sender_acl: ["otherbox@doman3.tld", "@aliasdomain.tld"] - spam_aliases: 0 - username: info@doman3.tld - tags: ["tag1", "tag2"] - description: OK - headers: {} - tags: - - Mailboxes - description: You can list all mailboxes existing in system. - operationId: Get mailboxes - summary: Get mailboxes - "/api/v1/get/mailbox-group/{id}": - get: - parameters: - - description: id of the group, or "all" (optionally followed by /domain1,domain2) - example: all - in: path - name: id - required: true - schema: - type: string - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - id: 7 - domain: example.org - name: Sales - description: Sales team - address: sales@example.org - sender_allowed: 1 - sogo_visible: 0 - internal: 0 - template_id: 3 - template: Staff - priority: 10 - idp_ref: null - members: - - username: alice@example.org - source: manual - - username: bob@example.org - source: idp - send_as: - - shared@example.org - imap_grants: - - owner: shared@example.org - rights: write - subscribe: 1 - state: applied - last_error: null - sogo_grants: - - owner: shared@example.org - type: Calendar - folder: personal - access: write - subscribe: 1 - state: applied - last_error: null - active: 1 - created: "2026-10-25 12:00:00" - modified: null - can_edit: true - description: OK - headers: {} - tags: - - Groups - description: >- - Groups visible to the caller (admins all, domain admins their domains). - operationId: Get groups - summary: Get groups - "/api/v1/get/mailbox-group/member/{username}": - get: - parameters: - - description: mailbox - example: alice@example.org - in: path - name: username - required: true - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - groups: - - id: 7 - domain: example.org - name: Sales - address: sales@example.org - sender_allowed: 1 - active: 1 - priority: 10 - template: Staff - source: manual - template: Staff - send_as: - - sales@example.org - - shared@example.org - description: OK - headers: {} - tags: - - Groups - description: >- - Groups of a mailbox, its effective group template and the addresses it - may send as through groups. - operationId: Get group memberships - summary: Get group memberships - /api/v1/get/identity-provider/sync-status: - get: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - provider: keycloak - can_sync: true - sync_enabled: true - counts: - accounts: 120 - linked: 118 - idp_disabled: 2 - missing: 1 - runs: - - id: 42 - provider: keycloak - mode: run - status: ok - requested_by: "" - created: "2026-10-25 12:00:00" - started: "2026-10-25 12:00:01" - finished: "2026-10-25 12:00:03" - summary: - counts: - creates: 1 - deactivate: 1 - memberships: 2 - details: - creates: - - new@example.org - deactivate: - - left@example.org - conflicts: [] - errors: [] - blocked: false - mode: run - description: OK - headers: {} - tags: - - Identity Provider - description: >- - Sync status (admins only): mailboxes of the Identity Provider and their links, and the last sync runs - with their summary. Run status: pending, running, ok, blocked (change limit), error (listing failed, - nothing was changed). - operationId: Get identity sync status - summary: Get identity sync status - "/api/v1/get/identity-link/{username}": - get: - parameters: - - description: mailbox - example: alice@example.org - in: path - name: username - required: true - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - provider: keycloak - external_id: 8d5da28d-7541-428b-8356-a9704f73e7f4 - idp_disabled: 0 - missing_since: null - description: OK - headers: {} - tags: - - Identity Provider - description: >- - Identity Provider user a mailbox is linked to (admins, and domain admins for their mailboxes). - `idp_disabled` = login was disabled by the sync, `missing_since` = not listed by the Identity Provider. - operationId: Get identity link - summary: Get identity link - /api/v1/get/mailq/all: - get: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - arrival_time: 1570091234 - message_size: 1848 - queue_id: B98C6260CA1 - queue_name: incoming - recipients: - - recipient@awesomecow.tld - sender: sender@mailcow.tld - description: OK - headers: {} - tags: - - Queue Manager - description: Get the current mail queue and everything it contains. - operationId: Get Queue - summary: Get Queue - "/api/v1/get/oauth2-client/{id}": - get: - parameters: - - description: id of entry you want to get - example: all - in: path - name: id - required: true - schema: - enum: - - all - - "1" - - "2" - - "5" - - "10" - type: string - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - client_id: 17c76aaa88c0 - client_secret: 73fc668a88147e32a31ff80c - grant_types: null - id: 1 - redirect_uri: "https://mailcow.tld" - scope: profile - user_id: null - description: OK - headers: {} - tags: - - oAuth Clients - description: Using this endpoint you can get all oAuth clients. - operationId: Get oAuth Clients - summary: Get oAuth Clients - "/api/v1/get/policy_bl_domain/{domain}": - get: - parameters: - - description: name of domain - in: path - name: domain - required: true - schema: - type: string - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - object: domain.tld - prefid: 2 - value: "*@baddomain.tld" - description: OK - headers: {} - tags: - - Domain antispam policies - description: You can list all blacklist policies per domain. - operationId: List blacklist domain policy - summary: List blacklist domain policy - "/api/v1/get/policy_wl_domain/{domain}": - get: - parameters: - - description: name of domain - in: path - name: domain - required: true - schema: - type: string - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - object: domain.tld - prefid: 1 - value: "*@gooddomain.tld" - description: OK - headers: {} - tags: - - Domain antispam policies - description: You can list all whitelist policies per domain. - operationId: List whitelist domain policy - summary: List whitelist domain policy - /api/v1/get/quarantine/all: - get: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - created: 1572688831 - id: 33 - notified: 1 - qid: 8224615004C1 - rcpt: admin@domain.tld - score: 15.48 - sender: bounces@send.domain.tld - subject: mailcow is awesome - virus_flag: 0 - description: OK - headers: {} - tags: - - Quarantine - description: Get all mails that are currently in Quarantine. - operationId: Get mails in Quarantine - summary: Get mails in Quarantine - "/api/v1/get/recipient_map/{id}": - get: - parameters: - - description: id of entry you want to get - example: all - in: path - name: id - required: true - schema: - enum: - - all - - "1" - - "2" - - "5" - - "10" - type: string - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - active: "1" - created: "2019-10-02 22:06:29" - id: 3 - modified: null - recipient_map_new: target@mailcow.tld - recipient_map_old: recipient@mailcow.tld - description: OK - headers: {} - tags: - - Address Rewriting - description: Using this endpoint you can get all recipient maps. - operationId: Get Recipient Map - summary: Get Recipient Map - "/api/v1/get/relayhost/{id}": - get: - parameters: - - description: id of entry you want to get - example: all - in: path - name: id - required: true - schema: - enum: - - all - - "1" - - "2" - - "5" - - "10" - type: string - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - active: "1" - hostname: "mailcow.tld:25" - id: 1 - password: supersecurepassword - password_short: tes... - used_by_domains: "" - username: testuser - description: OK - headers: {} - tags: - - Routing - description: Using this endpoint you can get all Sender-Dependent Transports. - operationId: Get Sender-Dependent Transports - summary: Get Sender-Dependent Transports - /api/v1/get/resource/all: - get: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - active: "1" - description: test - domain: mailcow.tld - kind: location - local_part: test - multiple_bookings: 0 - name: test@mailcow.tld - description: OK - headers: {} - tags: - - Resources - description: Using this endpoint you can get all Resources. - operationId: Get Resources - summary: Get Resources - "/api/v1/get/rl-mbox/{mailbox}": - get: - parameters: - - description: name of mailbox or all - in: path - name: mailbox - required: true - schema: - type: string - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - frame: s - mailbox: leon@mailcow.tld - value: "5" - - frame: s - mailbox: lisa@mailcow.tld - value: "3" - description: OK - headers: {} - tags: - - Ratelimits - description: >- - Using this endpoint you can get the ratelimits for a certain mailbox. - You can use all for all mailboxes. - operationId: Get mailbox ratelimits - summary: Get mailbox ratelimits - "/api/v1/get/rl-domain/{domain}": - get: - parameters: - - description: name of domain or all - in: path - name: domain - required: true - schema: - type: string - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - frame: s - domain: domain.tld - value: "5" - - frame: s - mailbox: domain2.tld - value: "3" - description: OK - headers: {} - tags: - - Ratelimits - description: >- - Using this endpoint you can get the ratelimits for a certain domains. - You can use all for all domain. - operationId: Get domain ratelimits - summary: Get domain ratelimits - /api/v1/edit/rl-mbox/: - post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - type: success - log: - - ratelimit - - edit - - mailbox - - object: - - info@domain.tld - rl_value: "10" - rl_frame: h - msg: - - rl_saved - - info@domain.tld - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Ratelimits - description: >- - Using this endpoint you can edit the ratelimits for a certain mailbox. - operationId: Edit mailbox ratelimits - requestBody: - content: - application/json: - schema: + networks: + type: object + pids_stats: + type: object + additionalProperties: true example: - attr: - rl_value: "10" - rl_frame: "h" - items: - - info@domain.tld - properties: - attr: - properties: - rl_frame: - description: contains the frame for the ratelimit h,s,m - type: string - rl_value: - description: contains the rate for the ratelimit 10,20,50,1 - type: number - type: object - items: - description: contains list of mailboxes you want to edit the ratelimit of - type: object - type: object - summary: Edit mailbox ratelimits - /api/v1/edit/rl-domain/: - post: - responses: + - read: "2026-11-10T19:20:01.123456789Z" + name: /mailcowdockerized-dovecot-mailcow-1 + id: 5d0f3cbb2a6e4f6c8e0e1c3b9a7d2f41b6c5e8a9d0f1e2c3b4a5968778695a4b + pids_stats: + current: 38 + memory_stats: + usage: 104857600 + limit: 12541669376 + blkio_stats: + io_service_bytes_recursive: + - major: 8 + minor: 0 + op: read + value: 1052672 + - major: 8 + minor: 0 + op: write + value: 40960 + networks: + eth0: + rx_bytes: 2621440 + tx_bytes: 1048576 "401": $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - type: success - - log: - - ratelimit - - edit - - domain - - object: - - domain.tld - rl_value: "50" - rl_frame: "h" - msg: - - rl_saved - - domain.tld - schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} - tags: - - Ratelimits - description: >- - Using this endpoint you can edit the ratelimits for a certain domains. - operationId: Edit domain ratelimits - requestBody: - content: - application/json: - schema: - example: - attr: - rl_value: "10" - rl_frame: "h" - items: - - domain.tld - properties: - attr: - properties: - rl_frame: - description: contains the frame for the ratelimit h,s,m - type: string - rl_value: - description: contains the rate for the ratelimit 10,20,50,1 - type: number - type: object - items: - description: contains list of domains you want to edit the ratelimit of - type: object - type: object - summary: Edit domain ratelimits - /api/v1/get/status/containers: + /api/v1/get/status/host: get: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - acme-mailcow: - container: acme-mailcow - image: "mailcow/acme:1.63" - started_at: "2019-12-22T21:00:08.270660275Z" - state: running - type: info - clamd-mailcow: - container: clamd-mailcow - image: "mailcow/clamd:1.35" - started_at: "2019-12-22T21:00:01.622856172Z" - state: running - type: info - dockerapi-mailcow: - container: dockerapi-mailcow - image: "mailcow/dockerapi:1.36" - started_at: "2019-12-22T20:59:59.984797808Z" - state: running - type: info - dovecot-mailcow: - container: dovecot-mailcow - image: "mailcow/dovecot:1.104" - started_at: "2019-12-22T21:00:08.988680259Z" - state: running - type: info - ipv6nat-mailcow: - container: ipv6nat-mailcow - image: robbertkl/ipv6nat - started_at: "2019-12-22T21:06:37.273225445Z" - state: running - type: info - memcached-mailcow: - container: memcached-mailcow - image: "memcached:alpine" - started_at: "2019-12-22T20:59:58.0907785Z" - state: running - type: info - mysql-mailcow: - container: mysql-mailcow - image: "mariadb:10.3" - started_at: "2019-12-22T21:00:02.201937528Z" - state: running - type: info - netfilter-mailcow: - container: netfilter-mailcow - image: "mailcow/netfilter:1.31" - started_at: "2019-12-22T21:00:09.851559297Z" - state: running - type: info - nginx-mailcow: - container: nginx-mailcow - image: "nginx:mainline-alpine" - started_at: "2019-12-22T21:00:12.9843038Z" - state: running - type: info - olefy-mailcow: - container: olefy-mailcow - image: "mailcow/olefy:1.2" - started_at: "2019-12-22T20:59:59.676259274Z" - state: running - type: info - php-fpm-mailcow: - container: php-fpm-mailcow - image: "mailcow/phpfpm:1.55" - started_at: "2019-12-22T21:00:00.955808957Z" - state: running - type: info - postfix-mailcow: - container: postfix-mailcow - image: "mailcow/postfix:1.44" - started_at: "2019-12-22T21:00:07.186717617Z" - state: running - type: info - redis-mailcow: - container: redis-mailcow - image: "redis:5-alpine" - started_at: "2019-12-22T20:59:56.827166834Z" - state: running - type: info - rspamd-mailcow: - container: rspamd-mailcow - image: "mailcow/rspamd:1.56" - started_at: "2019-12-22T21:00:12.456075355Z" - state: running - type: info - sogo-mailcow: - container: sogo-mailcow - image: "mailcow/sogo:1.65" - started_at: "2019-12-22T20:59:58.382274592Z" - state: running - type: info - unbound-mailcow: - container: unbound-mailcow - image: "mailcow/unbound:1.10" - started_at: "2019-12-22T20:59:58.760595825Z" - state: running - type: info - watchdog-mailcow: - container: watchdog-mailcow - image: "mailcow/watchdog:1.65" - started_at: "2019-12-22T20:59:56.028660382Z" - state: running - type: info - description: OK - headers: {} + summary: Get host statistics + description: CPU, memory, uptime and architecture of the Docker host. + operationId: getHostStatus tags: - Status - description: >- - Using this endpoint you can get the status of all containers and when - hey where started and a few other details. - operationId: Get container status - summary: Get container status - /api/v1/get/status/vmail: - get: responses: - "401": - $ref: "#/components/responses/Unauthorized" "200": + description: The host statistics content: application/json: - examples: - response: - value: - disk: /dev/mapper/mail--vg-root - total: 41G - type: info - used: 11G - used_percent: 28% - description: OK - headers: {} - tags: - - Status - description: >- - Using this endpoint you can get the status of the vmail and the amount - of used storage. - operationId: Get vmail status - summary: Get vmail status - /api/v1/get/status/version: - get: - responses: + schema: + $ref: "#/components/schemas/HostStats" + example: + cpu: + cores: 4 + usage: 6 + memory: + total: 12541669376 + usage: 62.5 + swap: + - 1022357504 + - 512716800 + - 509640704 + - 50.2 + - 1392812032 + - 3864260608 + uptime: 703800.5492310524 + system_time: "10.11.2026 19:13:07" + architecture: x86_64 "401": $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - version: "2022-04" - description: OK - headers: {} + /api/v1/get/status/host/ip: + get: + summary: Get public IP addresses + description: >- + The public IPv4 and IPv6 address of the server. Asks + ipv4.mailcow.email and ipv6.mailcow.email on every call, even with the + IP check off. + operationId: getHostIps tags: - Status - description: >- - Using this endpoint you can get the current running release of this - instance. - operationId: Get version status - summary: Get version status + responses: + "200": + description: The addresses, `false` for an address that could not be determined + content: + application/json: + schema: + type: object + properties: + ipv4: + type: [string, boolean] + description: Public IPv4 address + ipv6: + type: [string, boolean] + description: Public IPv6 address + example: + ipv4: 198.51.100.25 + ipv6: 2001:db8::25 + "401": + $ref: "#/components/responses/Unauthorized" /api/v1/get/syncjobs/all/no_log: get: - parameters: - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - id: 1 - user2: mailbox@domain.tld - source_id: 3 - user1: username - active: 1 - automap: 1 - custom_params: '[{"o":"folder","v":"INBOX"}]' - custom_params_legacy: null - delete1: 0 - delete2: 0 - delete2duplicates: 1 - dry: 0 - exclude: (?i)spam|(?i)junk - exit_status: EX_OK - is_running: 0 - last_run: "2026-10-15 11:40:02" - success: 1 - log: "" - maxage: 0 - maxbytespersecond: "0" - mins_interval: 20 - prio: 0 - skipcrossduplicates: 0 - subfolder2: External - subscribeall: 1 - timeout1: 600 - timeout2: 600 - created: "2026-10-01 11:37:25" - modified: "2026-10-15 11:40:02" - source_name: Example import - source_description: "" - source_host: imap.example.org - source_port: 993 - source_enc: SSL - source_auth_type: PLAIN - source_oauth_flow: client_credentials - source_created_by: "" - source_scope: all - source_active: 1 - source_oauth_token_expires: null - source_oauth_last_refresh_error: null - user_token_exists: 0 - user_token_expires: null - user_token_error: null - description: OK - headers: {} + summary: Get all sync jobs without logs + description: >- + Like `GET /api/v1/get/syncjobs/all`, with an empty `log`. + operationId: getSyncJobsWithoutLog tags: - Sync jobs - description: >- - Lists all sync jobs the caller may access (`/api/v1/get/syncjobs/all` - includes the log, `/api/v1/get/syncjobs/[/no_log]` filters by - mailbox). Jobs are ordered by prio DESC, never-run first, last_run ASC, - id ASC. - `custom_params_legacy` holds options of migrated jobs that could not be - converted (informational, not used). The removed fields `host1`, - `port1`, `enc1` and `authmech1` are no longer part of a job. - operationId: Get sync jobs - summary: Get sync jobs - "/api/v1/get/syncjob_source/{id}": + responses: + "200": + description: The sync jobs + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/SyncJob" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/syncjob_source/{id}: get: - parameters: - - description: source id, or `all` to list every source visible to the session (sorted by name) - example: all - in: path - name: id - required: true - schema: - type: string - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - id: 3 - name: Example import - description: "" - created_by: "" - scope: domain - domains: - - example.org - users: [] - host: imap.example.org - port: 993 - enc: SSL - host1: imap.example.org - port1: 993 - enc1: SSL - verify_cert: 1 - auth_type: XOAUTH2 - oauth_flow: authorization_code - oauth_token_endpoint: https://login.example.org/token - oauth_authorize_endpoint: https://login.example.org/authorize - oauth_userinfo_endpoint: null - oauth_client_id: 0000-1111 - oauth_scope: https://outlook.office.com/IMAP.AccessAsUser.All offline_access - oauth_extra_params: null - oauth_redirect_uri: https://mail.example.org/syncjob-oauth - oauth_token_expires: null - oauth_last_refresh_error: null - oauth_last_refresh_attempt: null - has_client_secret: true - has_access_token: false - can_edit: true - active: 1 - created: "2026-10-01 09:00:00" - modified: "2026-10-01 09:00:00" - description: OK - headers: {} + summary: Get sync source + description: >- + One sync source by id, visible as in `GET /api/v1/get/syncjob_source/all`. + operationId: getSyncJobSource tags: - Sync jobs - description: >- - Returns a single sync source by id, or all sources visible to the caller - when `id` is `all`. `can_edit` tells whether the caller may edit/delete - the source. - operationId: Get sync job sources - summary: Get sync job sources + parameters: + - name: id + in: path + required: true + description: Source id + schema: + type: integer + example: 4 + responses: + "200": + description: The sync source + content: + application/json: + schema: + $ref: "#/components/schemas/SyncJobSource" + example: + id: 4 + name: Google Workspace + description: "" + created_by: admin + scope: all + host1: imap.gmail.com + port1: 993 + enc1: SSL + verify_cert: 1 + auth_type: XOAUTH2 + oauth_flow: authorization_code + oauth_token_endpoint: https://oauth2.googleapis.com/token + oauth_authorize_endpoint: https://accounts.google.com/o/oauth2/v2/auth + oauth_userinfo_endpoint: null + oauth_client_id: 1234567890-example.apps.googleusercontent.com + oauth_scope: https://mail.google.com/ openid email + oauth_extra_params: '{"access_type":"offline","prompt":"consent"}' + oauth_token_expires: null + oauth_last_refresh_error: null + oauth_last_refresh_attempt: null + created: "2026-11-01 10:00:00" + modified: null + active: 1 + domains: [] + users: [] + can_edit: true + host: imap.gmail.com + port: 993 + enc: SSL + has_client_secret: true + has_access_token: false + oauth_redirect_uri: https://mail.example.org/syncjob-oauth + "401": + $ref: "#/components/responses/Unauthorized" /api/v1/get/syncjob_options: get: - parameters: - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - dry: false - folder: true - maxsize: true - sslargs1: ^SSL_verify_mode=[01]$ - description: OK - headers: {} + summary: Get allowed custom imapsync options + description: >- + The imapsync options allowed in `custom_params`, with their rule: `true` + needs a value, `false` takes none, a string is a regular expression the + whole value must match. Options that run code, use local files or print + secrets are never allowed. Every logged-in user may read it. + operationId: getSyncJobOptions tags: - Sync jobs - description: >- - Returns the allowlist of imapsync options accepted in a sync job's - `custom_params` as option => rule: `true` = requires a non-empty value, - `false` = flag without value, string = regular expression the whole - value must match. - operationId: Get sync job options - summary: Get sync job options + responses: + "200": + description: Option name => rule + content: + application/json: + schema: + type: object + additionalProperties: + type: + - boolean + - string + example: + authmd51: false + debugssl: true + folder: true + maxsize: true + syncinternaldates: false + sslargs1: "^SSL_verify_mode=[01]$" + "401": + $ref: "#/components/responses/Unauthorized" /api/v1/get/imapsync_settings: get: - parameters: - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - max_parallel: 4 - max_bytes_per_second: 2048000 - max_kb_per_second: 2000 - description: OK - headers: {} + summary: Get global sync job settings + description: >- + Settings of the sync job runner. + operationId: getSyncJobSettings tags: - Sync jobs - description: >- - Admin only. Returns the global sync job settings (`{}` for other roles). - operationId: Get sync job settings - summary: Get sync job settings - "/api/v1/get/tls-policy-map/{id}": - get: - parameters: - - description: id of entry you want to get - example: all - in: path - name: id - required: true - schema: - enum: - - all - - "1" - - "2" - - "5" - - "10" - type: string - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string responses: - "401": - $ref: "#/components/responses/Unauthorized" "200": + description: The settings content: application/json: - examples: - response: - value: - - parameters: "" - active: "1" - created: "2019-10-03 08:42:12" - dest: mailcow.tld - id: 1 - modified: null - policy: encrypt - description: OK - headers: {} + schema: + $ref: "#/components/schemas/SyncJobSettings" + example: + max_parallel: 3 + max_bytes_per_second: 2048000 + max_kb_per_second: 2000 + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/syncjobs/all: + get: + summary: Get all sync jobs + description: >- + All sync jobs with their logs, in queue order. Admins also get jobs of + deleted mailboxes, domain admins the jobs of their mailboxes; users get + none, see `GET /api/v1/get/syncjobs/{mailbox}`. + operationId: getSyncJobs + tags: + - Sync jobs + responses: + "200": + description: The sync jobs + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/SyncJob" + example: + - id: 12 + user2: alice@example.org + regextrans2: "" + authmd51: 0 + domain2: "" + subfolder2: Imported + user1: alice@old-provider.example.com + exclude: "(?i)spam|(?i)junk" + maxage: 0 + mins_interval: 20 + maxbytespersecond: "0" + delete2duplicates: 1 + delete1: 0 + delete2: 0 + automap: 1 + skipcrossduplicates: 0 + custom_params: '[{"o":"folder","v":"INBOX"}]' + timeout1: 600 + timeout2: 600 + subscribeall: 1 + dry: 0 + is_running: 0 + last_run: "2026-11-09 08:20:01" + success: 1 + exit_status: EX_OK + created: "2026-11-03 09:40:09" + modified: "2026-11-03 09:42:21" + active: 1 + source_id: 3 + custom_params_legacy: null + prio: 0 + source_name: Old provider + source_description: Migration from the old provider + source_host: imap.example.com + source_port: 993 + source_enc: SSL + source_auth_type: PLAIN + source_created_by: API + source_scope: domain + source_oauth_flow: client_credentials + source_active: 1 + source_oauth_token_expires: null + source_oauth_last_refresh_error: null + user_token_expires: null + user_token_error: null + user_token_exists: 0 + log: "Transfer started at Mon Nov 9 08:20:02 2026\n..." + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/syncjobs/{mailbox}: + get: + summary: Get sync jobs of a mailbox + description: >- + The sync jobs of a local mailbox with their logs, in queue order. + Domain admins may read their mailboxes, users their own. A value that is + no email address returns the caller's own jobs. + operationId: getMailboxSyncJobs + tags: + - Sync jobs + parameters: + - name: mailbox + in: path + required: true + description: Local mailbox (`user2` of the jobs) + schema: + type: string + example: alice@example.org + responses: + "200": + description: The sync jobs of the mailbox + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/SyncJob" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/syncjobs/{mailbox}/no_log: + get: + summary: Get sync jobs of a mailbox without logs + description: >- + Like `GET /api/v1/get/syncjobs/{mailbox}`, with an empty `log`. + operationId: getMailboxSyncJobsWithoutLog + tags: + - Sync jobs + parameters: + - name: mailbox + in: path + required: true + description: Local mailbox (`user2` of the jobs) + schema: + type: string + example: alice@example.org + responses: + "200": + description: The sync jobs of the mailbox + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/SyncJob" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/syncjob_source/all: + get: + summary: Get sync sources + description: >- + The sync sources the caller may see, ordered by name. Domain admins see + their own, `all` sources and those for their domains or mailboxes or + created by their mailboxes; users their own, `all` sources and those + for them or their domain. + operationId: getSyncJobSources + tags: + - Sync jobs + responses: + "200": + description: The sync sources + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/SyncJobSource" + example: + - id: 3 + name: Old provider + description: Migration from the old provider + created_by: API + scope: domain + host1: imap.example.com + port1: 993 + enc1: SSL + verify_cert: 1 + auth_type: PLAIN + oauth_flow: client_credentials + oauth_token_endpoint: null + oauth_authorize_endpoint: null + oauth_userinfo_endpoint: null + oauth_client_id: null + oauth_scope: null + oauth_extra_params: null + oauth_token_expires: null + oauth_last_refresh_error: null + oauth_last_refresh_attempt: null + created: "2026-11-03 09:42:21" + modified: null + active: 1 + domains: + - example.org + users: [] + can_edit: true + host: imap.example.com + port: 993 + enc: SSL + has_client_secret: false + has_access_token: false + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/tls-policy-map/{id}: + get: tags: - Outgoing TLS Policy Map Overrides - description: Using this endpoint you can get all TLS policy map override maps. - operationId: Get TLS Policy Map - summary: Get TLS Policy Map - "/api/v1/get/transport/{id}": - get: + summary: Get TLS policy maps + operationId: getTlsPolicyMaps + description: >- + `all` lists the TLS policy maps, an ID returns one map with an extra + member `"0": null`. `{}` if there is none or the caller is no + administrator. parameters: - - description: id of entry you want to get - example: all + - name: id in: path - name: id required: true - schema: - enum: - - all - - "1" - - "2" - - "5" - - "10" - type: string - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false + description: "`all` or the ID of a TLS policy map" schema: type: string + example: all responses: - "401": - $ref: "#/components/responses/Unauthorized" "200": + description: The list of TLS policy maps (`all`) or one TLS policy map content: application/json: + schema: + anyOf: + - type: array + items: + $ref: "#/components/schemas/TlsPolicyMap" + - $ref: "#/components/schemas/TlsPolicyMap" examples: - response: + all: + summary: get/tls-policy-map/all value: - - active: "1" - destination: example.org - id: 1 - lookup_mx: "0" - nexthop: "host:25" - password: supersecurepw - password_short: sup... - username: testuser - description: OK - headers: {} + - id: 2 + dest: example.com + policy: encrypt + parameters: protocols=>=TLSv1.2 + active: 1 + created: "2026-11-06 12:00:31" + modified: null + one: + summary: get/tls-policy-map/2 + value: + id: 2 + dest: example.com + policy: encrypt + parameters: protocols=>=TLSv1.2 + active: 1 + created: "2026-11-06 12:00:31" + modified: null + "0": null + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/edit/tls-policy-map: + post: + tags: + - Outgoing TLS Policy Map Overrides + summary: Update TLS policy maps + operationId: editTlsPolicyMap + description: >- + Changes the TLS policy maps in `items`; fields not sent keep their + value. An error stops the call; an existing destination answers + `recipient_map_entry_exists`. + + + Messages: `tls_policy_map_entry_saved`; errors + `tls_policy_map_dest_invalid`, `tls_policy_map_parameter_invalid`. + requestBody: + content: + application/json: + schema: + type: object + properties: + items: + description: IDs of the TLS policy maps, a single value or a list + oneOf: + - type: array + items: + type: [integer, string] + - type: [integer, string] + attr: + type: object + properties: + dest: + type: string + description: Destination, e.g. `example.org` or `[mail.example.org]:25` + policy: + type: string + enum: + - none + - may + - encrypt + - dane + - dane-only + - fingerprint + - verify + - secure + parameters: + type: string + description: Empty or space-separated `name=value` attributes + active: + type: [boolean, integer, string] + description: 1 = active, 0 = inactive + required: + - items + - attr + example: + items: + - 2 + attr: + policy: dane + parameters: "" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/transport/{id}: + get: tags: - Routing - description: Using this endpoint you can get all Transport Maps. - operationId: Get Transport Maps - summary: Get Transport Maps - /api/v1/edit/spam-score/: - post: + summary: Get transport maps + operationId: getTransports + description: >- + `all` lists the transport maps, an ID returns one; the password is in + clear text. `{}` if there is none or the caller is no administrator. + parameters: + - name: id + in: path + required: true + description: "`all` or the ID of a transport map" + schema: + type: string + example: all responses: - "401": - $ref: "#/components/responses/Unauthorized" "200": + description: The list of transport maps (`all`) or one entry content: application/json: - examples: - response: - value: - - type: success - log: - - mailbox - - edit - - spam_score - - username: - - info@domain.tld - spam_score: "8,15" - msg: - - mailbox_modified - - info@domain.tld schema: - properties: - log: - description: contains request object - items: {} - type: array - msg: - items: {} - type: array - type: - enum: - - success - - danger - - error - type: string - type: object - description: OK - headers: {} + anyOf: + - type: array + items: + $ref: "#/components/schemas/Transport" + - $ref: "#/components/schemas/Transport" + examples: + all: + summary: get/transport/all + value: + - id: 4 + is_mx_based: 0 + destination: example.com + nexthop: "[mx.example.com]:25" + username: "" + password: "" + active: 1 + password_short: "..." + - id: 5 + is_mx_based: 1 + destination: .*\.google\.com + nexthop: "[smtp.example.net]:587" + username: relay-user@example.net + password: Secret-Passphrase-42 + active: 1 + password_short: Sec... + one: + summary: get/transport/4 + value: + id: 4 + is_mx_based: 0 + destination: example.com + nexthop: "[mx.example.com]:25" + username: "" + password: "" + active: 1 + password_short: "..." + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/edit/relayhost: + post: tags: - - Mailboxes + - Routing + summary: Update sender-dependent transports + operationId: editRelayhost description: >- - Using this endpoint you can edit the spam filter score for a certain mailbox. - operationId: Edit mailbox spam filter score + Changes the sender-dependent transports in `items`; fields not sent + and an empty `hostname` keep their value. + + + Messages: `object_modified`; errors `relayhost_invalid`. requestBody: content: application/json: schema: - example: - - items: - - info@domain.tld - attr: - spam_score: "8,15" - summary: Edit mailbox spam filter score - "/api/v1/get/mailbox/all/{domain}": - get: - parameters: - - description: name of domain - in: path - name: domain - required: true - schema: - type: string - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string + type: object + properties: + items: + description: IDs of the sender-dependent transports, a single value or a list + oneOf: + - type: array + items: + type: [integer, string] + - type: [integer, string] + attr: + type: object + properties: + hostname: + type: string + description: Next hop, e.g. `[smtp.example.com]:587` + username: + type: string + description: SMTP user name, empty for no authentication + password: + type: string + description: SMTP password + active: + type: [boolean, integer, string] + description: 1 = active, 0 = inactive + required: + - items + - attr + example: + items: + - 1 + attr: + password: New-Secret-Passphrase-43 + active: "1" responses: + "200": + $ref: "#/components/responses/WriteResult" "401": $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - active: "1" - attributes: - force_pw_update: "0" - force_tfa: "0" - mailbox_format: "maildir:" - quarantine_notification: never - sogo_access: "1" - tls_enforce_in: "0" - tls_enforce_out: "0" - custom_attributes: {} - domain: domain3.tld - is_relayed: 0 - local_part: info - max_new_quota: 10737418240 - messages: 0 - name: Full name - percent_class: success - percent_in_use: 0 - quota: 3221225472 - quota_used: 0 - rl: false - sender_acl: ["otherbox@domain3.tld", "@aliasdomain.tld"] - spam_aliases: 0 - username: info@domain3.tld - tags: ["tag1", "tag2"] - description: OK - headers: {} + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/transport: + post: tags: - - Mailboxes - description: You can list all mailboxes existing in system for a specific domain. - operationId: Get mailboxes of a domain - summary: Get mailboxes of a domain + - Routing + summary: Update transport maps + operationId: editTransport + description: >- + Changes the transport maps in `items`; fields not sent keep their + value. An empty `username` also clears the password; credentials apply + to all entries of the next hop. Destination and next-hop errors stop + the call. + + + Messages: `object_modified`; errors `relayhost_invalid`, + `transport_dest_exists`, `invalid_destination`, `next_hop_interferes`. + requestBody: + content: + application/json: + schema: + type: object + properties: + items: + description: IDs of the transport maps, a single value or a list + oneOf: + - type: array + items: + type: [integer, string] + - type: [integer, string] + attr: + type: object + properties: + destination: + type: string + description: One destination (see add/transport) + nexthop: + type: string + description: Next hop, e.g. `[mx.example.com]:25` + username: + type: string + description: SMTP user name; empty removes the credentials + password: + type: string + description: SMTP password + is_mx_based: + type: [boolean, integer, string] + description: 1 = `destination` is a regular expression for MX names + active: + type: [boolean, integer, string] + description: 1 = active, 0 = inactive + required: + - items + - attr + example: + items: + - 4 + attr: + nexthop: "[mx2.example.com]:25" + active: "1" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" /api/v1/edit/cors: post: - responses: - "401": - $ref: "#/components/responses/Unauthorized" - "200": - content: - application/json: - examples: - response: - value: - - type: "success" - log: ["cors", "edit", {"allowed_origins": ["*", "https://mail.mailcow.tld"], "allowed_methods": ["POST", "GET", "DELETE", "PUT"]}] - msg: "cors_headers_edited" - description: OK - headers: { } + summary: Edit CORS settings + description: >- + Sets the origins and methods allowed to call the API from a browser. A + missing value is reset to its default. + + + Messages: `cors_headers_edited`; errors `cors_invalid_origin`, + `cors_invalid_method`. + operationId: editCors tags: - Cross-Origin Resource Sharing (CORS) - description: >- - This endpoint allows you to manage Cross-Origin Resource Sharing (CORS) settings for the API. - CORS is a security feature implemented by web browsers to prevent unauthorized cross-origin requests. - By editing the CORS settings, you can specify which domains and which methods are permitted to access the API resources from outside the mailcow domain. - operationId: Edit Cross-Origin Resource Sharing (CORS) settings requestBody: + required: true content: application/json: schema: - example: - attr: - allowed_origins: ["*", "https://mail.mailcow.tld"] - allowed_methods: ["POST", "GET", "DELETE", "PUT"] + type: object properties: attr: type: object properties: allowed_origins: - type: array - items: - type: string + description: >- + `scheme://host[:port]` (http/https, no path) or `*`; a + list or one origin per line. Default: the mailcow URL. + oneOf: + - type: array + items: + type: string + - type: string allowed_methods: - type: array - items: - type: string - summary: Edit Cross-Origin Resource Sharing (CORS) settings - "/api/v1/get/spam-score/{mailbox}": - get: - parameters: - - description: name of mailbox or empty for current user - admin user will retrieve the global spam filter score - in: path - name: mailbox - required: true - schema: - type: string - - description: e.g. api-key-string - example: api-key-string - in: header - name: X-API-Key - required: false - schema: - type: string + description: >- + Uppercase; a list or a string with single separators + (`GET,POST`, not `GET, POST`). Default: all four. + oneOf: + - type: array + items: + type: string + enum: + - GET + - POST + - PUT + - DELETE + - type: string + required: + - attr + example: + attr: + allowed_origins: + - https://app.example.org + - https://admin.example.com:8443 + allowed_methods: + - GET + - POST responses: + "200": + $ref: "#/components/responses/WriteResult" "401": $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/spam-score/{mailbox}: + get: + tags: + - Mailbox user settings + summary: Get the spam score of a mailbox + operationId: getSpamScore + description: >- + The spam thresholds of the mailbox, its own or the server default. `{}` + without access. + parameters: + - name: mailbox + in: path + required: true + description: Mailbox address + schema: + type: string + example: john.doe@example.org + responses: "200": + description: Thresholds content: application/json: - examples: - response: - value: - spam_score: "8,15" - description: OK - headers: {} + schema: + $ref: "#/components/schemas/SpamScore" + example: + score: "6,12" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/edit/spam-score: + post: + tags: + - Mailbox user settings + summary: Set the spam score of mailboxes + operationId: editSpamScore + description: >- + Sets the spam thresholds of the mailboxes: from the first value mail + goes to junk, from the second it is rejected. `default` removes the own + values. Needs the user ACL `spam_score`. + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + $ref: "#/components/schemas/MailboxItems" + attr: + type: object + required: + - spam_score + properties: + spam_score: + type: string + description: '"low,high" (numbers) or "default"' + examples: + - "6,12" + - default + example: + items: + - john.doe@example.org + attr: + spam_score: "6,12" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/add/mailbox/template: + post: tags: - Mailboxes + summary: Create a mailbox template + operationId: addMailboxTemplate description: >- - Using this endpoint you can get the global spam filter score or the spam filter score of a certain mailbox. - operationId: Get mailbox or global spam filter score - summary: Get mailbox or global spam filter score - /api/v1/edit/identity-provider: - post: + Saves a named set of mailbox settings that `add/mailbox` uses as + defaults. Without `acl` it grants no user ACL. + + + Messages: `template_added`; errors `template_exists`, + `quarantine_category_invalid`. + requestBody: + required: true + content: + application/json: + schema: + allOf: + - type: object + required: + - template + properties: + template: + type: string + description: Name of the template + - $ref: "#/components/schemas/MailboxTemplateInput" + example: + template: Sales + quota: 2048 + tags: + - sales + quarantine_notification: daily + quarantine_category: reject + rl_value: 100 + rl_frame: h + active: 1 + protocol_access: + - imap + - smtp + - sieve + acl: + - spam_alias + - spam_score + - app_passwds responses: + "200": + $ref: "#/components/responses/WriteResult" "401": $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/mailbox/all: + get: + tags: + - Mailboxes + summary: Get all mailboxes + operationId: getMailboxes + description: >- + All mailboxes of the domains the caller manages, without resources. + `{}` if none. + parameters: + - $ref: "#/components/parameters/MailboxTagsQuery" + responses: "200": + description: List of mailboxes content: application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Mailbox" examples: - response: - value: - - type: "success" - log: - - "identity_provider" - - "edit" - - authsource: "keycloak" - server_url: "https://auth.mailcow.tld" - realm: "mailcow" - client_id: "mailcow_client" - client_secret: "*" - redirect_url: "https://mail.mailcow.tld" - redirect_url_extra: ["https://extramail.mailcow.tld"] - version: "26.1.3" - default_template: "Default" - mappers: - - "small_mbox" - - "medium_mbox" - templates: - - "small" - - "medium" - ignore_ssl_error: true - mailpassword_flow: true - periodic_sync: true - import_users: true - sync_interval: 30 - msg: - - "object_modified" - - "" - description: OK - headers: { } + mailboxes: + $ref: "#/components/examples/MailboxList" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/mailbox/all/{domains}: + get: + tags: + - Mailboxes + summary: Get the mailboxes of domains + operationId: getMailboxesOfDomains + description: >- + Like `get/mailbox/all` for the given domains. Caution: an unknown or + foreign domain adds all mailboxes the caller manages. + parameters: + - name: domains + in: path + required: true + description: Domain name or comma-separated list of domain names + schema: + type: string + example: example.org + - $ref: "#/components/parameters/MailboxTagsQuery" + responses: + "200": + description: List of mailboxes + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Mailbox" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/mailbox/reduced: + get: + tags: + - Mailboxes + summary: Get all mailboxes (reduced details) + operationId: getMailboxesReduced + description: >- + Like `get/mailbox/all` without the costly fields named in `Mailbox`; + faster on large installations. + parameters: + - $ref: "#/components/parameters/MailboxTagsQuery" + responses: + "200": + description: List of mailboxes + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Mailbox" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/mailbox/reduced/{domains}: + get: + tags: + - Mailboxes + summary: Get the mailboxes of domains (reduced details) + operationId: getMailboxesReducedOfDomains + description: >- + Like `get/mailbox/reduced` for the given domains; an unknown domain + adds all mailboxes the caller manages. + parameters: + - name: domains + in: path + required: true + description: Domain name or comma-separated list of domain names + schema: + type: string + example: example.org,example.com + - $ref: "#/components/parameters/MailboxTagsQuery" + responses: + "200": + description: List of mailboxes + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Mailbox" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/mailbox/template/all: + get: + tags: + - Mailboxes + summary: Get all mailbox templates + operationId: getMailboxTemplates + description: >- + All mailbox templates, also for domain admins. `{}` if none. + responses: + "200": + description: List of templates + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/MailboxTemplate" + example: + - id: 2 + template: Default + type: mailbox + attributes: + tags: [] + quota: 0 + quarantine_notification: hourly + quarantine_category: reject + rl_frame: s + rl_value: "" + force_pw_update: 0 + force_tfa: 0 + sogo_access: 1 + active: 1 + tls_enforce_in: 0 + tls_enforce_out: 0 + imap_access: 1 + pop3_access: 1 + smtp_access: 1 + sieve_access: 1 + eas_access: 1 + dav_access: 1 + acl_spam_alias: 1 + acl_tls_policy: 1 + acl_spam_score: 1 + acl_spam_policy: 1 + acl_delimiter_action: 1 + acl_syncjobs: 0 + acl_eas_reset: 1 + acl_sogo_profile_reset: 0 + acl_pushover: 1 + acl_quarantine: 1 + acl_quarantine_attachments: 1 + acl_quarantine_notification: 1 + acl_quarantine_category: 1 + acl_app_passwds: 1 + created: "2026-09-21 10:23:08" + modified: null + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/mailbox/template/{id}: + get: + tags: + - Mailboxes + summary: Get a mailbox template + operationId: getMailboxTemplate + description: >- + One mailbox template by ID, also for domain admins. `{}` if not found. + parameters: + - name: id + in: path + required: true + description: Template ID + schema: + type: integer + example: 2 + responses: + "200": + description: The template + content: + application/json: + schema: + $ref: "#/components/schemas/MailboxTemplate" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/edit/mailbox/template: + post: + tags: + - Mailboxes + summary: Update mailbox templates + operationId: editMailboxTemplate + description: >- + Changes mailbox templates and passes the change on to mailboxes that + use them as group template. `Default` keeps its name. Send the complete + template: fields not sent are reset (`quota` to 0, protocol and ACL + settings lost), and `quarantine_category` is required. + + + Messages: `template_modified`; errors `template_id_invalid`, + `quarantine_category_invalid`. + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + description: Template ID or list of template IDs + oneOf: + - type: integer + - type: array + items: + type: integer + attr: + allOf: + - type: object + properties: + template: + type: string + description: New name of the template (not for "Default") + - $ref: "#/components/schemas/MailboxTemplateInput" + example: + items: + - 3 + attr: + template: Sales + quota: 4096 + tags: + - sales + tagged_mail_handler: subfolder + quarantine_notification: daily + quarantine_category: reject + rl_value: 100 + rl_frame: h + force_pw_update: 0 + force_tfa: 0 + sogo_access: 1 + active: 1 + tls_enforce_in: 0 + tls_enforce_out: 1 + protocol_access: + - imap + - smtp + - sieve + - dav + acl: + - spam_alias + - spam_score + - delimiter_action + - app_passwds + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/rename-mbox: + post: + tags: + - Mailboxes + summary: Rename a mailbox + operationId: renameMailbox + description: >- + Renames `old_local_part@domain` to `new_local_part@domain`, including + maildir, aliases and SOGo account. The mailbox is named in `attr`, not + `items`, and must be active (1 or 2). Also for domain admins. Answers + `mailbox_renamed`. + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - attr + properties: + items: + description: Not used + attr: + type: object + required: + - domain + - old_local_part + - new_local_part + properties: + domain: + type: string + description: Domain of the mailbox + old_local_part: + type: string + description: Current local part + new_local_part: + type: string + description: New local part + create_alias: + type: [integer, string] + enum: [0, 1, "0", "1"] + default: 0 + description: 1 creates an alias from the old to the new address + example: + items: [] + attr: + domain: example.org + old_local_part: john.doe + new_local_part: john + create_alias: 1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/mailbox/template: + post: + tags: + - Mailboxes + summary: Delete mailbox templates + operationId: deleteMailboxTemplate + description: >- + Deletes mailbox templates by ID; `Default` is kept silently. Answers + `template_removed`. + requestBody: + required: true + content: + application/json: + schema: + type: array + description: Template IDs + items: + type: integer + example: + - 3 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/last-login/{mailbox}: + get: + tags: + - Mailboxes + summary: Get the last logins of a mailbox + operationId: getLastLogin + description: >- + Logins of the mailbox in the last 7 days (`sasl`, the latest per + address, service and app password) and its previous UI login (`ui`, + only for admins and the mailbox user itself). + parameters: + - name: mailbox + in: path + required: true + description: Mailbox address + schema: + type: string + example: john.doe@example.org + responses: + "200": + description: Logins + content: + application/json: + schema: + $ref: "#/components/schemas/LastLogin" + example: + ui: + remote: 198.51.100.23 + time: 1793011200 + sasl: + - real_rip: 198.51.100.23 + datetime: "2026-11-09 08:12:44" + service: imap + app_password: 23 + app_password_name: Thunderbird + location: DE + - real_rip: Web/EAS/Internal (172.22.1.248) + datetime: "2026-11-08 17:03:10" + service: SOGO + app_password: 0 + app_password_name: null + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/last-login/{mailbox}/{days}: + get: + tags: + - Mailboxes + summary: Get the last logins of a mailbox for a period + operationId: getLastLoginDays + description: >- + Like `get/last-login/{mailbox}` for the last `{days}` days; values + below 1 mean 7. + parameters: + - name: mailbox + in: path + required: true + description: Mailbox address + schema: + type: string + example: john.doe@example.org + - name: days + in: path + required: true + description: Number of days + schema: + type: integer + minimum: 1 + example: 30 + responses: + "200": + description: Logins + content: + application/json: + schema: + $ref: "#/components/schemas/LastLogin" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/reset-last-login/{mailbox}: + get: + tags: + - Mailboxes + summary: Clear the login history of a mailbox + operationId: resetLastLogin + description: >- + Deletes the login history of the mailbox. A `get` route that changes + data: read-only API keys can call it. Always answers `true`. + parameters: + - name: mailbox + in: path + required: true + description: Mailbox address + schema: + type: string + example: john.doe@example.org + responses: + "200": + description: Done + content: + application/json: + schema: + type: boolean + example: true + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/delete/eas_cache: + post: + tags: + - Mailboxes + summary: Reset the ActiveSync devices of mailboxes + operationId: deleteEasCache + description: >- + Deletes the ActiveSync device cache of the mailboxes, so devices sync + from scratch. Needs the user ACL `eas_reset`; a mailbox user may reset + only its own. + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/MailboxItems" + example: + - john.doe@example.org + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/sogo_profile: + post: + tags: + - Mailboxes + summary: Reset the SOGo profile of mailboxes + operationId: deleteSogoProfile + description: >- + Deletes the SOGo data of the mailboxes: profile, settings, calendars + and address books. Needs the user ACL `sogo_profile_reset`; a mailbox + user may reset only its own. + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/MailboxItems" + example: + - john.doe@example.org + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/bcc-destination-options: + get: + tags: + - Mailboxes + summary: Get the possible BCC map destinations + operationId: getBccDestinationOptions + description: >- + What a BCC map can be bound to: the caller's domains, their mailboxes + with their aliases, and alias domains. Empty keys are left out. + responses: + "200": + description: Domains, mailboxes with their addresses, alias domains + content: + application/json: + schema: + type: object + properties: + domains: + type: array + items: + type: string + mailboxes: + type: object + description: Mailbox address → the mailbox and its aliases + additionalProperties: + type: array + items: + type: string + alias_domains: + type: array + items: + type: string + example: + domains: + - example.org + mailboxes: + john.doe@example.org: + - john.doe@example.org + - sales@example.org + jane.roe@example.org: + - jane.roe@example.org + alias_domains: + - example.net + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/search/mailbox: + post: + tags: + - Mailboxes + summary: Search mailboxes page by page + operationId: searchMailboxes + description: >- + Server-side search behind the UI mailbox table (DataTables format) over + the mailboxes the caller manages. Read-only API keys may use it; + mailbox users get `403`. + + + Columns: 2 address, 3 quota, 4 last mail login, 5 last password change, + 6 quota in use, 7 name, 20 messages, 23 tags, 24 active. Send 4, 5, 6 + and 20 as not searchable and 23 as not orderable, else the query fails. + `recordsTotal` equals `recordsFiltered`. + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/MailboxSearchRequest" + example: + draw: 1 + start: 0 + length: 25 + search: + value: john + order: + - column: 2 + dir: asc + columns: + - searchable: false + orderable: false + - searchable: false + orderable: false + - data: username + searchable: true + orderable: true + - searchable: false + orderable: true + - searchable: false + orderable: true + - searchable: false + orderable: true + - searchable: false + orderable: true + - data: name + searchable: true + orderable: true + responses: + "200": + description: >- + One page of mailboxes. A failing database query answers + `{"error": "An SQL error occurred: ..."}` instead. + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/MailboxSearchResult" + - type: object + properties: + error: + type: string + examples: + page: + $ref: "#/components/examples/MailboxSearchPage" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + description: The caller is a mailbox user or not logged in + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + example: + type: error + msg: Insufficient permissions + /api/v1/edit/identity-provider: + post: + summary: Configure the Identity Provider + description: >- + Saves the Identity Provider configuration (Keycloak, generic OpenID + Connect or LDAP). Send the complete configuration including the secrets: + settings not sent are reset to their defaults. Changing the LDAP + `id_attribute` drops the stored links; mailboxes are matched by email + again. + + + Messages: `object_modified`; errors `required_data_missing`, + `invalid_authsource`, `authsource_in_use`. + operationId: editIdentityProvider tags: - Identity Provider - description: >- - Configure an external Identity Provider to use as user authentication - operationId: Edit external Identity Provider settings requestBody: content: application/json: schema: + type: object + required: + - attr properties: items: - type: array - default: ["identity-provider"] + description: Not used attr: - type: object - properties: - authsource: - description: Specifies the type of the Identity Provider - type: string - enum: [ldap, keycloak, generic-oidc] - server_url: - description: The base URL of your Keycloak server. Required if `authsource` is keycloak. - type: string - realm: - description: The Keycloak realm where the mailcow client is configured. Required if `authsource` is keycloak. - type: string - client_id: - description: The Client ID assigned to mailcow Client in OIDC Provider. Required if `authsource` is keycloak or generic-oidc. - type: string - client_secret: - description: The Client Secret assigned to mailcow Client in OIDC Provider. Required if `authsource` is keycloak or generic-oidc. - type: string - redirect_url: - description: The redirect URL that OIDC Provider will use after authentication. Required if `authsource` is keycloak or generic-oidc. - type: string - redirect_url_extra: - description: Additional redirect URLs that OIDC Provider can use after authentication if valid. - type: array - version: - description: Specifies the Keycloak version. Required if `authsource` is keycloak. - type: string - default_template: - description: (Optional) If no matching Attribute Mapping exists for a User, the default template will be used for creating the mailbox, but not for updating the mailbox. - type: string - mappers: - description: (Optional) Attribute values used to match a mailbox template. Each element corresponds to the respective index in the templates array (i.e., the first element matches the first element of templates, the second matches the second, and so on). - type: array - templates: - description: (Optional) Defines the mailbox templates to be assigned. Each element corresponds to the respective index in the `mappers` array. - type: array - ignore_ssl_error: - description: If enabled, SSL certificate validation is bypassed - type: boolean - default: false - mailpassword_flow: - description: If enabled, mailcow will attempt to validate user credentials using the Keycloak Admin REST API instead of relying solely on the Authorization Code Flow. - type: boolean - default: false - periodic_sync: - description: If enabled, mailcow periodically performs a full sync of all users from Keycloak or LDAP. - type: boolean - default: false - import_users: - description: If enabled, new users are automatically imported from Keycloak or LDAP into mailcow. - type: boolean - default: false - sync_interval: - description: Defines the time interval (in minutes) for periodic synchronization and user imports. - type: number - default: 15 - host: - description: The address of your LDAP server. You can provide a single hostname or a comma-separated list of hosts for fallback in case the primary server is unreachable. Required if `authsource` is ldap. - type: string - port: - description: The port used to connect to the LDAP server. Required if `authsource` is ldap. - type: string - use_ssl: - description: enable LDAPS connection. If Port is set to 389 it will be overriden to 636. - type: boolean - default: false - use_tls: - description: enable TLS connection. TLS is recommended over SSL. SSL Ports cannot be used. - type: boolean - default: false - basedn: - description: The Distinguished Name (DN) from which searches will be performed. Required if `authsource` is ldap. - type: string - username_field: - description: The LDAP attribute used to identify users during authentication. Required if `authsource` is ldap. - type: string - default: mail - filter: - description: An optional LDAP search filter to refine which users can authenticate. - type: string - attribute_field: - description: (Optional) Specifies an LDAP attribute that holds a specific value which can be mapped to a mailbox template using the Attribute Mapping section. - type: string - binddn: - description: The Distinguished Name (DN) of the LDAP user that will be used to authenticate and perform LDAP searches. This account should have sufficient permissions to read the required attributes. Required if `authsource` is ldap. - type: string - bindpass: - description: The password for the Bind DN user. It is required for authentication when connecting to the LDAP server. Required if `authsource` is ldap. - type: string - authorize_url: - description: The OIDC provider's authorization server URL. Required if `authsource` is generic-oidc. - type: string - token_url: - description: The OIDC provider's token server URL. Required if `authsource` is generic-oidc. - type: string - userinfo_url: - description: The OIDC provider's user info server URL. Required if `authsource` is generic-oidc. - type: string - client_scopes: - description: Specifies the OIDC scopes requested during authentication. - type: string - default: "openid profile email mailcow_template" - offboarding: - description: (Keycloak, LDAP) Users disabled in the Identity Provider, or missing in two complete sync runs, get login disabled (mailbox active = 2, mail is still received). Only mailboxes disabled by the sync are enabled again. - type: boolean - default: false - offboarding_limit: - description: (Keycloak, LDAP) Sync runs that would disable more mailboxes or remove more group memberships than this share in percent (at least 5) are blocked. - type: number - default: 10 - group_sync: - description: (Keycloak, LDAP) Syncs the members of Identity Provider groups to mailbox groups. Members added in mailcow stay. - type: boolean - default: false - group_autocreate: - description: (Keycloak, LDAP) Creates a mailbox group for every Identity Provider group without one. The group mail becomes its address if it is free. - type: boolean - default: false - group_default_domain: - description: (Keycloak, LDAP) Domain of new groups whose mail is not in a mailcow domain. - type: string - group_paths: - description: (Keycloak) Comma-separated group paths, e.g. `/Sales` or `/mailcow/*` (all groups below /mailcow). Needs the `query-groups` permission. - type: string - id_attribute: - description: (LDAP) Attribute with a stable user id. Empty = objectGUID, entryUUID, nsUniqueId or ipaUniqueID. Changing it links all mailboxes again by email. - type: string - disabled_filter: - description: (LDAP) Filter for disabled users. Active Directory accounts with ACCOUNTDISABLE in userAccountControl are always disabled. - type: string - group_basedn: - description: (LDAP) Base DN of the group search, default `basedn`. - type: string - group_filter: - description: (LDAP) Filter for the synced groups, required for group sync. - type: string - group_name_attribute: - description: (LDAP) Attribute with the group name. - type: string - default: cn - group_member_mode: - description: "(LDAP) Source of the memberships: memberof (memberOf of the users), member (member attribute of the groups) or ad_chain (Active Directory incl. nested groups)." - type: string - enum: [memberof, member, ad_chain] - default: memberof - group_member_attribute: - description: (LDAP) Member attribute for group_member_mode member, e.g. member or uniqueMember. - type: string - default: member + $ref: "#/components/schemas/IdentityProviderAttributes" examples: keycloak: value: - items: - - "identity-provider" attr: - authsource: "keycloak" - server_url: "https://auth.mailcow.tld" - realm: "mailcow" - client_id: "mailcow_client" - client_secret: "Xy7GdPqvJ9m3R8sT2LkVZ5W1oNbCaYQf" - redirect_url: "https://mail.mailcow.tld" - redirect_url_extra: ["https://extramail.mailcow.tld"] - version: "26.1.3" - default_template: "Default" - mappers: ["small_mbox", "medium_mbox"] - templates: ["small", "medium"] - ignore_ssl_error: true - mailpassword_flow: true - periodic_sync: true - import_users: true - sync_interval: 30 + authsource: keycloak + server_url: https://auth.example.org + realm: mailcow + client_id: mailcow + client_secret: client-secret-value + redirect_url: https://mail.example.org + redirect_url_extra: + - https://webmail.example.org + version: 26.1.3 + login_provisioning: 1 + mailpassword_flow: 0 + periodic_sync: 1 + import_users: 1 + sync_interval: 15 + offboarding: 1 + offboarding_limit: 10 + group_sync: 1 + group_autocreate: 1 + group_paths: /mailcow/* + group_default_domain: example.org + default_template: Default + mappers: + - staff + templates: + - Staff ldap: value: - items: - - "identity-provider" attr: - authsource: "ldap" - host: "127.0.0.1" - port: "389" - use_ssl: false - use_tls: false - ignore_ssl_error: false - basedn: "DC=mailcow,DC=local" - username_field: "mail" - filter: "(memberOf:1.2.840.113556.1.4.1941:=DC=mailcow,DC=local)" - attribute_field: "othermailbox" - binddn: "CN=LDAP Read Only,CN=Users,DC=mailcow,DC=local" - bindpass: "moohoo" - default_template: "Default" - mappers: ["small_mbox", "medium_mbox"] - templates: ["small", "medium"] - periodic_sync: true - import_users: true + authsource: ldap + host: ldap1.example.org,ldap2.example.org + port: 636 + use_ssl: 1 + use_tls: 0 + ignore_ssl_error: 0 + basedn: dc=example,dc=org + binddn: cn=mailcow,ou=services,dc=example,dc=org + bindpass: bind-password + username_field: mail + filter: (objectClass=inetOrgPerson) + attribute_field: departmentNumber + login_provisioning: 1 + periodic_sync: 1 + import_users: 1 sync_interval: 30 + group_sync: 1 + group_filter: (objectClass=groupOfNames) + group_member_mode: member + group_member_attribute: member + default_template: Default generic-oidc: value: - items: - - "identity-provider" attr: - authsource: "generic-oidc" - authorize_url: "https://auth.mailcow.tld/application/o/authorize/" - token_url: "https://auth.mailcow.tld/application/o/token/" - userinfo_url: "https://auth.mailcow.tld/application/o/userinfo/" - client_id: "mailcow_client" - client_secret: "Xy7GdPqvJ9m3R8sT2LkVZ5W1oNbCaYQf" - redirect_url: "https://mail.mailcow.tld" - redirect_url_extra: ["https://extramail.mailcow.tld"] - client_scopes: "openid profile email mailcow_template" - default_template: "Default" - mappers: ["small_mbox", "medium_mbox"] - templates: ["small", "medium"] - ignore_ssl_error: true - summary: Edit external Identity Provider + authsource: generic-oidc + authorize_url: https://sso.example.org/application/o/authorize/ + token_url: https://sso.example.org/application/o/token/ + userinfo_url: https://sso.example.org/application/o/userinfo/ + client_id: mailcow + client_secret: client-secret-value + redirect_url: https://mail.example.org + client_scopes: openid profile email mailcow_template + login_provisioning: 1 + default_template: Default + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/identity-provider: + get: + summary: Get Identity Provider settings + description: >- + The stored Identity Provider settings, also those of providers + configured before. Read/write API keys get the secrets in plain text, + read-only keys `*`. Without a configuration it answers + `{"login_provisioning": 1}`. + operationId: getIdentityProvider + tags: + - Identity Provider + responses: + "200": + description: The settings + content: + application/json: + schema: + $ref: "#/components/schemas/IdentityProviderSettings" + example: + authsource: keycloak + server_url: https://auth.example.org + realm: mailcow + client_id: mailcow + client_secret: "*" + redirect_url: https://mail.example.org + redirect_url_extra: + - https://webmail.example.org + version: 26.1.3 + mailpassword_flow: "0" + periodic_sync: "1" + import_users: "1" + sync_interval: "15" + ignore_ssl_error: false + login_provisioning: true + group_paths: /mailcow/* + offboarding: "1" + offboarding_limit: "10" + group_sync: "1" + group_autocreate: "1" + group_default_domain: example.org + default_template: Default + mappers: + - staff + templates: + - Staff + access_token: "*" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/edit/identity-provider-test: + post: + summary: Test an Identity Provider connection + description: >- + Tests the connection data in `attr` without storing it; stored settings + are not used, so send the secrets too. Keycloak must issue a + client_credentials token and generic-oidc answer OPTIONS on `token_url` + (HTTP 200 within 7 s); LDAP must bind. The answer has no details, and a + missing or unknown `authsource` answers success without a test. + operationId: testIdentityProvider + tags: + - Identity Provider + requestBody: + content: + application/json: + schema: + type: object + required: + - attr + properties: + items: + description: Not used + attr: + type: object + required: + - authsource + properties: + authsource: + type: string + enum: + - keycloak + - generic-oidc + - ldap + server_url: + type: string + description: Keycloak base URL + realm: + type: string + description: Keycloak realm + client_id: + type: string + description: Keycloak client id + client_secret: + type: string + description: Keycloak client secret + token_url: + type: string + description: generic-oidc token endpoint + ignore_ssl_error: + type: + - boolean + - integer + - string + description: Do not verify the TLS certificate + host: + type: string + description: LDAP host, or several separated by commas + port: + type: + - integer + - string + description: LDAP port + basedn: + type: string + binddn: + type: string + bindpass: + type: string + use_ssl: + type: + - boolean + - integer + - string + description: LDAPS + use_tls: + type: + - boolean + - integer + - string + description: StartTLS, ignored with `use_ssl` + example: + attr: + authsource: keycloak + server_url: https://auth.example.org + realm: mailcow + client_id: mailcow + client_secret: client-secret-value + ignore_ssl_error: 0 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/identity-provider: + post: + summary: Delete the Identity Provider configuration + description: >- + Deletes all Identity Provider settings, mailbox links and the sync + history. Refused while any mailbox uses an external provider. The body + must be valid JSON, e.g. `[]`. + + Messages: `item_deleted`; errors `authsource_in_use`. + operationId: deleteIdentityProvider + tags: + - Identity Provider + requestBody: + content: + application/json: + schema: + description: Not used, any JSON value + example: [] + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/add/filter: + post: + tags: + - Mailbox filters + summary: Create a Sieve filter + operationId: addFilter + description: >- + Adds a Sieve script to a mailbox. Needs the ACL `filters` (admins, + domain admins). Activating a filter deactivates the other filters of + the same type and mailbox. + + + Messages: `mailbox_modified`; errors `sieve_error`, `no_user_defined`, + `script_empty`. + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - username + - script_data + - script_desc + - filter_type + properties: + username: + type: string + description: Mailbox of the filter + script_desc: + type: string + description: Description + script_data: + type: string + description: The Sieve script + filter_type: + type: string + enum: + - prefilter + - postfilter + description: Runs before (prefilter) or after (postfilter) the user's own filters + active: + type: [integer, string] + enum: [0, 1, "0", "1"] + default: 0 + example: + username: john.doe@example.org + script_desc: Move newsletters + script_data: |- + require "fileinto"; + if header :contains "List-Id" "newsletter" { + fileinto "Newsletters"; + } + filter_type: prefilter + active: 1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/filters/all: + get: + tags: + - Mailbox filters + summary: Get all Sieve filters + operationId: getFilters + description: >- + The Sieve filters of all mailboxes the caller manages, `{}` if none. + responses: + "200": + description: List of filters + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/SieveFilter" + example: + - active: 1 + id: 7 + username: john.doe@example.org + filter_type: prefilter + script_data: |- + require "fileinto"; + if header :contains "List-Id" "newsletter" { + fileinto "Newsletters"; + } + script_desc: Move newsletters + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/filters/{mailbox}: + get: + tags: + - Mailbox filters + summary: Get the Sieve filters of a mailbox + operationId: getMailboxFilters + description: >- + The Sieve filters of the mailbox, `{}` if none or no access. + parameters: + - name: mailbox + in: path + required: true + description: Mailbox address + schema: + type: string + example: john.doe@example.org + responses: + "200": + description: List of filters + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/SieveFilter" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/edit/filter: + post: + tags: + - Mailbox filters + summary: Update Sieve filters + operationId: editFilter + description: >- + Changes filters by ID; fields not sent keep their value. Needs the ACL + `filters` (admins, domain admins). Activating a filter deactivates the + others of the same type and mailbox. An unknown ID answers + `access_denied`. + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - items + - attr + properties: + items: + description: Filter ID or list of IDs + oneOf: + - type: integer + - type: array + items: + type: integer + attr: + type: object + properties: + script_desc: + type: string + script_data: + type: string + filter_type: + type: string + enum: + - prefilter + - postfilter + active: + type: [integer, string] + enum: [0, 1, "0", "1"] + example: + items: + - 7 + attr: + active: 0 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/filter: + post: + tags: + - Mailbox filters + summary: Delete Sieve filters + operationId: deleteFilter + description: >- + Deletes filters by ID; IDs that are not numeric are skipped. Needs the + ACL `filters` (admins, domain admins). + requestBody: + required: true + content: + application/json: + schema: + type: array + description: Filter IDs + items: + type: integer + example: + - 7 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/active-user-sieve/{mailbox}: + get: + tags: + - Mailbox filters + summary: Get the active Sieve script of a mailbox + operationId: getActiveUserSieve + description: >- + The Sieve script the user activated in a mail client or SOGo, as a list + with one string. `{}` if none or no access. + parameters: + - name: mailbox + in: path + required: true + description: Mailbox address + schema: + type: string + example: john.doe@example.org + responses: + "200": + description: The script as the only element of a list + content: + application/json: + schema: + type: array + maxItems: 1 + items: + type: string + example: + - |- + require ["fileinto"]; + if header :contains "subject" "invoice" { + fileinto "Invoices"; + } + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/add/mailbox-policy: + post: + tags: + - Mailbox antispam policies + summary: Add a sender to the allow or deny list of a mailbox + operationId: addMailboxPolicy + description: >- + Adds a sender to the allow list (`wl`, never spam) or deny list (`bl`, + rejected) of a mailbox. Needs the user ACL `spam_policy`. + + + Messages: `mailbox_modified`; errors `policy_list_from_invalid`, + `policy_list_from_exists`. + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - username + - object_list + - object_from + properties: + username: + type: string + description: Mailbox + object_list: + type: string + enum: + - wl + - bl + description: wl = allow list, bl = deny list + object_from: + type: string + description: "Sender address, domain or pattern; allowed: letters, digits, `@ _ . - *`" + example: + username: john.doe@example.org + object_list: bl + object_from: "*@spam.example.com" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/policy_wl_mailbox/{mailbox}: + get: + tags: + - Mailbox antispam policies + summary: Get the allow list of a mailbox + operationId: getMailboxPolicyAllowList + description: >- + The allow list entries of the mailbox and of its domain (see `object`). + `{}` if none or no access. + parameters: + - name: mailbox + in: path + required: true + description: Mailbox address + schema: + type: string + example: john.doe@example.org + responses: + "200": + description: List of entries + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/SpamPolicyEntry" + example: + - object: john.doe@example.org + value: "*@partner.example.com" + prefid: 12 + - object: example.org + value: newsletter@example.net + prefid: 4 + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/policy_bl_mailbox/{mailbox}: + get: + tags: + - Mailbox antispam policies + summary: Get the deny list of a mailbox + operationId: getMailboxPolicyDenyList + description: >- + Like `get/policy_wl_mailbox/{mailbox}` for the deny list. + parameters: + - name: mailbox + in: path + required: true + description: Mailbox address + schema: + type: string + example: john.doe@example.org + responses: + "200": + description: List of entries + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/SpamPolicyEntry" + example: + - object: john.doe@example.org + value: "*@spam.example.com" + prefid: 13 + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/delete/mailbox-policy: + post: + tags: + - Mailbox antispam policies + summary: Delete allow or deny list entries of mailboxes + operationId: deleteMailboxPolicy + description: >- + Deletes allow or deny list entries of mailboxes by `prefid`. Needs the + user ACL `spam_policy`. Domain entries are refused; use + `delete/domain-policy`. + requestBody: + required: true + content: + application/json: + schema: + type: array + description: prefid values + items: + type: integer + example: + - 13 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/add/rsetting: + post: + summary: Add Rspamd settings rule + description: >- + Adds a rule to the Rspamd settings map. `content` is an Rspamd settings + entry; `GET /api/v1/get/presets/rspamd` has examples. Without `desc` + nothing is saved and the answer is empty. + + + Messages: `settings_map_added`; errors `map_content_empty`. + operationId: addRspamdSetting + tags: + - Rspamd + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/RspamdSettingAttributes" + example: + desc: Disable all but DKIM and rate limit for authenticated users + content: |- + priority = 10; + authenticated = yes; + apply "default" { + symbols_enabled = ["DKIM_SIGNED", "RATELIMITED", "RATELIMIT_UPDATE", "RATELIMIT_CHECK"]; + } + active: "1" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/rsetting/{id}: + get: + summary: Get Rspamd settings rules + description: >- + Returns one rule of the Rspamd settings map, or a list of all rules + with `all`. + operationId: getRspamdSettings + tags: + - Rspamd + parameters: + - name: id + in: path + required: true + description: "`all` or the ID of a rule" + schema: + type: string + example: all + responses: + "200": + description: The rule, or the list of rules for `all` + content: + application/json: + schema: + oneOf: + - type: array + items: + $ref: "#/components/schemas/RspamdSetting" + - $ref: "#/components/schemas/RspamdSetting" + example: + - id: 1 + desc: Disable Rspamd for example.org + content: |- + priority = 10; + rcpt = "/.*@example\.org$/"; + from = "/.*/"; + apply "default" { + MAILCOW_WHITE = -9999.0; + } + symbols [ + "MAILCOW_WHITE" + ] + active: 1 + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/edit/rsetting: + post: + summary: Edit Rspamd settings rules + description: >- + Changes rules of the Rspamd settings map. Fields not sent, and an empty + `desc` or `content`, keep the old value. + + + Messages: `object_modified`; errors `settings_map_invalid`. + operationId: editRspamdSetting + tags: + - Rspamd + requestBody: + content: + application/json: + schema: + type: object + properties: + items: + description: ID or list of IDs of the rules + oneOf: + - type: array + items: + type: [integer, string] + - type: [integer, string] + attr: + type: object + properties: + desc: + type: string + description: Short description (empty = keep) + content: + type: string + description: Rule content (empty = keep) + active: + type: [boolean, integer, string] + description: 1 = the rule is handed to Rspamd, 0 = inactive (not sent = keep) + required: + - items + - attr + example: + items: + - 1 + attr: + desc: Disable Rspamd for example.org + active: "0" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/rsetting: + post: + summary: Delete Rspamd settings rules + description: >- + Deletes rules of the Rspamd settings map. Answers + `settings_map_removed` for every ID, even unknown ones. + operationId: deleteRspamdSettings + tags: + - Rspamd + requestBody: + content: + application/json: + schema: + description: IDs of the rules (a single ID works too) + oneOf: + - type: array + items: + type: [integer, string] + - type: [integer, string] + example: + - 1 + - 2 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/rspamd-map: + post: + summary: Edit Rspamd global regex maps + description: >- + Replaces the content of global Rspamd regex maps (Global filters in the + UI). One regular expression per line, `#` starts a comment; unlike the + UI, the API does not check the expressions. Each map takes about a + second. + + + Messages: `object_modified`; errors `global_map_invalid`, + `global_map_write_error`. + operationId: editRspamdMap + tags: + - Rspamd + requestBody: + content: + application/json: + schema: + type: object + properties: + items: + description: File name or list of file names of the maps; all of them get the same content + oneOf: + - type: array + items: + $ref: "#/components/schemas/RspamdRegexMap" + - $ref: "#/components/schemas/RspamdRegexMap" + attr: + type: object + properties: + rspamd_map_data: + type: string + description: New content of the map (trimmed, replaces the whole file) + required: + - rspamd_map_data + required: + - items + - attr + example: + items: + - global_smtp_from_blacklist.map + attr: + rspamd_map_data: |- + # Envelope senders to reject + /^spammer@example\.com$/i + /@spam\.example\.net$/i + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/rspamd/actions: + get: + summary: Get Rspamd action statistics + description: >- + Returns how many messages Rspamd handled with each action, as + `[action, count]` pairs. Greylisted messages count as `soft reject`. + `{}` when Rspamd does not answer. + operationId: getRspamdActions + tags: + - Rspamd + responses: + "200": + description: List of `[action, count]` pairs + content: + application/json: + schema: + type: array + items: + type: array + prefixItems: + - type: string + description: Rspamd action + - type: integer + description: Number of messages + minItems: 2 + maxItems: 2 + example: + - - reject + - 38 + - - soft reject + - 1 + - - rewrite subject + - 0 + - - add header + - 6 + - - no action + - 255 + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/presets/{kind}: + get: + summary: Get Rspamd or Sieve presets + description: >- + Returns the example presets of the UI: `rspamd` for Rspamd settings + rules, `sieve` for Sieve filters. `headline` is in the session + language. Admins and domain admins. + operationId: getPresets + tags: + - Rspamd + - Global filters + parameters: + - name: kind + in: path + required: true + description: Kind of presets + schema: + type: string + enum: + - rspamd + - sieve + example: rspamd + responses: + "200": + description: List of presets + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Preset" + example: + - name: preset_1 + headline: Disable all but DKIM and rate limit for authenticated users + content: |- + priority = 10; + authenticated = yes; + apply "default" { + symbols_enabled = ["BCC", "DKIM_SIGNED", "RATELIMITED", "RATELIMIT_UPDATE", "RATELIMIT_CHECK", "DYN_RL_CHECK", "HISTORY_SAVE", "MILTER_HEADERS", "ARC_SIGNED"]; + } + - name: preset_4 + headline: Disable Rspamd for a domain + content: |- + priority = 10; + rcpt = "/.*@example.org$/"; + from = "/.*/"; + apply "default" { + MAILCOW_WHITE = -9999.0; + } + symbols [ + "MAILCOW_WHITE" + ] + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/add/global-filter: + post: + summary: Save a global Sieve filter + description: >- + Replaces the global Sieve prefilter or postfilter and restarts Dovecot. + A script with errors is not saved. + + + Messages: `global_filter_written`, `dovecot_restart_success`; errors + `sieve_error`, `invalid_filter_type`, `global_filter_write_error`, + `dovecot_restart_failed`. + operationId: addGlobalFilter + tags: + - Global filters + requestBody: + content: + application/json: + schema: + type: object + properties: + filter_type: + type: string + enum: + - prefilter + - postfilter + description: Which global filter to replace + script_data: + type: string + description: The Sieve script (CRLF and CR line ends become LF) + required: + - filter_type + - script_data + example: + filter_type: postfilter + script_data: |- + require "fileinto"; + if header :contains "X-Spam-Flag" "YES" { + fileinto "Junk"; + } + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/global_filters/all: + get: + summary: Get the global Sieve filters + description: >- + Returns the global Sieve prefilter and postfilter. + operationId: getGlobalFilters + tags: + - Global filters + responses: + "200": + description: Both scripts + content: + application/json: + schema: + $ref: "#/components/schemas/GlobalFilters" + example: + prefilter: | + # global_sieve_before script + # global_sieve_before -> user sieve_before (mailcow UI) -> user sieve_after (mailcow UI) -> global_sieve_after + postfilter: |- + # global_sieve_after script + require "fileinto"; + + if header :contains "X-Spam-Flag" "YES" { + fileinto "Junk"; + } + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/global_filters/{filter_type}: + get: + summary: Get one global Sieve filter + description: >- + Returns the global Sieve prefilter or postfilter as a JSON string; + `{}` when the script is empty. + operationId: getGlobalFilter + tags: + - Global filters + parameters: + - name: filter_type + in: path + required: true + description: Which global filter + schema: + type: string + enum: + - prefilter + - postfilter + example: prefilter + responses: + "200": + description: The Sieve script + content: + application/json: + schema: + type: string + example: | + # global_sieve_before script + # global_sieve_before -> user sieve_before (mailcow UI) -> user sieve_after (mailcow UI) -> global_sieve_after + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/edit/quota_notification: + post: + summary: Edit quota notification settings + description: >- + Saves sender, subject and template of the mails users get when their + mailbox crosses 80 % and 95 % of its quota. Fields not sent become + empty. The current values cannot be read through the API. + + + Messages: `saved_settings`; errors `redis_error`. + operationId: editQuotaNotification + tags: + - Quota notifications + requestBody: + content: + application/json: + schema: + type: object + properties: + items: + description: Ignored + attr: + type: object + properties: + sender: + type: string + description: Sender address (invalid address = empty) + subject: + type: string + description: Subject + html_tmpl: + type: string + description: HTML template (empty = the default template) + required: + - attr + example: + items: + - quota_notification + attr: + sender: quota-warning@example.org + subject: Quota warning + html_tmpl: "" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/quota_notification_bcc: + post: + summary: Edit quota notification BCC of a domain + description: >- + Sets the addresses that get a copy of every quota warning of a domain; + the list replaces the old one and cannot be read through the API. + Admins and domain admins of the domain. Invalid addresses are left out, + the others are saved. + + + Messages: `saved_settings`; errors `goto_invalid`, `redis_error`. + operationId: editQuotaNotificationBcc + tags: + - Quota notifications + requestBody: + content: + application/json: + schema: + type: object + properties: + items: + description: Ignored + attr: + type: object + properties: + domain: + type: string + description: Domain or alias domain + bcc_rcpt: + type: string + description: Addresses, separated by space, comma, semicolon or newline + active: + type: [boolean, integer, string] + description: 1 = send the copies; becomes 0 when no valid address is left + required: + - domain + required: + - attr + example: + items: + - quota_bcc + attr: + domain: example.org + bcc_rcpt: |- + postmaster@example.org + helpdesk@example.org + active: "1" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/admin/all: + get: + summary: Get administrators + description: Lists all administrators, without domain administrators and the API key account. + operationId: getAdmins + tags: + - Administrators + responses: + "200": + description: The administrators, `{}` if there are none + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Admin" + example: + - username: admin + tfa_active: 1 + tfa_active_int: 1 + active: 1 + active_int: 1 + created: "2026-09-21 10:23:08" + attributes: + force_tfa: "0" + force_pw_update: "0" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/admin/{username}: + get: + summary: Get administrator + description: Details of one administrator. + operationId: getAdmin + tags: + - Administrators + parameters: + - name: username + in: path + required: true + description: Username of the administrator + schema: + type: string + example: admin + responses: + "200": + description: The administrator, `{}` if there is no administrator of this name + content: + application/json: + schema: + $ref: "#/components/schemas/Admin" + example: + username: admin + tfa_active: 0 + tfa_active_int: 0 + active: 1 + active_int: 1 + created: "2026-09-21 10:23:08" + attributes: + force_tfa: "0" + force_pw_update: "0" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/add/admin: + post: + summary: Create administrator + description: >- + Creates an administrator. The username is stored in lowercase and must + not be in use by an administrator or domain administrator. Without + `active: 1` the account is disabled. + + + Messages: `admin_added`; errors `object_exists`, `password_complexity`, + `password_mismatch`. + operationId: addAdmin + tags: + - Administrators + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + username: + type: string + description: Username (letters, digits, `_`, `.`, `-`; stored in lowercase) + password: + type: string + description: Password, must match the password policy + password2: + type: string + description: The password again + active: + type: [integer, string, boolean] + description: 1 = the account can log in, 0 = disabled + default: 0 + required: + - username + - password + - password2 + example: + username: admin2 + password: "Rand0m-Passw0rd!" + password2: "Rand0m-Passw0rd!" + active: 1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/admin: + post: + summary: Edit administrators + description: >- + Changes administrators. Fields not sent keep their value, but + `force_tfa` and `force_pw_update` are reset to 0; an empty `password` + keeps the password. FIDO2 keys are not moved on rename. The last active + administrator cannot be deactivated. + + + Messages: `admin_modified`; errors `username_invalid`, + `password_mismatch`, `password_complexity`; warning `no_active_admin`. + operationId: editAdmin + tags: + - Administrators + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + items: + description: Username of the administrator, or a list of usernames + oneOf: + - type: string + - type: array + items: + type: string + attr: + type: object + properties: + active: + type: [integer, string, boolean] + description: 1 = active, 0 = disabled + username_new: + type: string + description: New username (letters, digits, `_`, `.`, `-`) + password: + type: string + description: New password; empty or missing keeps the password + password2: + type: string + description: The new password again + force_tfa: + type: [integer, string, boolean] + description: 1 = the administrator must set up two-factor authentication at the next login + default: 0 + force_pw_update: + type: [integer, string, boolean] + description: 1 = the administrator must change the password at the next login + default: 0 + disable_tfa: + type: [integer, string, boolean] + description: Present (any value) = turn off two-factor authentication + required: + - items + - attr + example: + items: + - admin2 + attr: + active: 1 + password: "N3w-Passw0rd!" + password2: "N3w-Passw0rd!" + force_pw_update: 1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/delete/admin: + post: + summary: Delete administrators + description: >- + Deletes administrators with their two-factor authentication and FIDO2 + keys. + + + Messages: `admin_removed`; error `username_invalid`. + operationId: deleteAdmin + tags: + - Administrators + requestBody: + required: true + content: + application/json: + schema: + type: array + description: Usernames of the administrators + items: + type: string + example: + - admin2 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/get/passwordpolicy: + get: + summary: Get password policy + description: The password policy for mailboxes, administrators and domain administrators. + operationId: getPasswordPolicy + tags: + - Password policy + responses: + "200": + description: The policy + content: + application/json: + schema: + $ref: "#/components/schemas/PasswordPolicy" + example: + length: "8" + chars: "1" + special_chars: "0" + lowerupper: "1" + numbers: "1" + "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/get/passwordpolicy/html: + get: + summary: Get password policy as HTML + description: >- + The password policy as HTML snippet in the default language, as shown + below password fields. + operationId: getPasswordPolicyHtml + tags: + - Password policy + responses: + "200": + description: The HTML snippet as a JSON string + content: + application/json: + schema: + type: string + example:

- Minimum password length is 8
- Must contain at least one alphabetic character
- Must contain lowercase and uppercase characters
- Must contain at least one number

+ "401": + $ref: "#/components/responses/Unauthorized" + /api/v1/edit/passwordpolicy: + post: + summary: Edit password policy + description: >- + Changes the password policy; fields not sent keep their value. Existing + passwords are not checked again. + + + Messages: `password_policy_saved`. + operationId: editPasswordPolicy + tags: + - Password policy + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + attr: + type: object + properties: + length: + type: [integer, string] + description: Minimum length; values below 3 keep the current length + chars: + type: [integer, string, boolean] + description: 1 = at least one letter + lowerupper: + type: [integer, string, boolean] + description: 1 = lowercase and uppercase letters + special_chars: + type: [integer, string, boolean] + description: 1 = at least one character that is no letter or digit + numbers: + type: [integer, string, boolean] + description: 1 = at least one digit + required: + - attr + example: + attr: + length: 12 + chars: 1 + lowerupper: 1 + special_chars: 0 + numbers: 1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/reset-password-notification: + post: + summary: Edit password reset e-mail + description: >- + Sets the password reset e-mail sent to the recovery address of a + mailbox. Fields not sent are saved as empty. With both templates empty + the defaults are used; without sender and subject, password reset is + off. + + + Placeholders: `{{username}}`, `{{username2}}` (recovery address), + `{{date}}`, `{{token_lifetime}}` (minutes), `{{hostname}}`, `{{link}}`. + + + Messages: `saved_settings`. + operationId: editPasswordResetNotification + tags: + - Password policy + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + attr: + type: object + properties: + from: + type: string + description: Sender address; an invalid address is saved as empty + subject: + type: string + description: Subject + text_tmpl: + type: string + description: Plain text template + html_tmpl: + type: string + description: HTML template (the text template becomes its alternative part) + required: + - attr + example: + attr: + from: noreply@example.org + subject: Reset your password + text_tmpl: "Hello {{username}}, open {{link}} within {{token_lifetime}} minutes to set a new password." + html_tmpl: "

Hello {{username}},

Set a new password within {{token_lifetime}} minutes.

" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/app_links: + post: + summary: Edit app links + description: >- + Replaces the custom links of the Apps menu, sent as four lists of equal + length. If the lengths differ, nothing is saved, but `app_links` is + reported anyway. Empty lists remove all custom links. + + + Messages: `app_links`. + operationId: editAppLinks + tags: + - UI customization + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + attr: + type: object + properties: + app: + type: array + description: Names of the links + items: + type: string + href: + type: array + description: URLs shown on the login page and to users without `user_href` + items: + type: string + user_href: + type: array + description: URLs for logged-in accounts (`%u` = username); empty = `href` + items: + type: string + hide: + type: array + description: Per link, `0` shows it on the login page, any other value (even `false`) hides it + items: + type: [string, integer, boolean] + required: + - attr + example: + attr: + app: + - Wiki + - Webmail (Roundcube) + href: + - https://wiki.example.org + - https://mail.example.org/rc/ + user_href: + - https://wiki.example.org + - https://mail.example.org/rc/?_user=%u + hide: + - "0" + - "1" + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/custom_login: + post: + summary: Edit login page options + description: >- + Sets the login page options. All four are replaced: a missing option + counts as 0. + + + Messages: `custom_login_modified`. + operationId: editCustomLogin + tags: + - UI customization + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + attr: + type: object + properties: + hide_user_quicklink: + type: [integer, string, boolean] + description: 1 = hide the link to the user login page + default: 0 + hide_domainadmin_quicklink: + type: [integer, string, boolean] + description: 1 = hide the link to the domain administrator login page + default: 0 + hide_admin_quicklink: + type: [integer, string, boolean] + description: 1 = hide the link to the administrator login page + default: 0 + force_sso: + type: [integer, string, boolean] + description: 1 = show only the Single Sign-On button (needs an OIDC identity provider) + default: 0 + required: + - attr + example: + attr: + hide_user_quicklink: 0 + hide_domainadmin_quicklink: 1 + hide_admin_quicklink: 1 + force_sso: 0 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/ip_check: + post: + summary: Edit IP check + description: >- + Turns the dashboard IP check on or off, which asks ipv4.mailcow.email + and ipv6.mailcow.email for the public addresses. + + + Messages: `ip_check_opt_in_modified`. + operationId: editIpCheck + tags: + - UI customization + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + attr: + type: object + properties: + ip_check_opt_in: + type: [integer, string, boolean] + description: 1/true = enabled; anything else or missing = disabled + default: 0 + required: + - attr + example: + attr: + ip_check_opt_in: 1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/ui_texts: + post: + summary: Edit UI texts + description: >- + Sets the texts of the mailcow UI. All values are replaced: a missing + one is saved as empty. + + + Messages: `ui_texts`. + operationId: editUiTexts + tags: + - UI customization + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + attr: + type: object + properties: + title_name: + type: string + description: Title of the browser window (plain text); empty = " - mail UI" + main_name: + type: string + description: Name shown on the start page (plain text); empty = " - mail UI" + apps_name: + type: string + description: Name of the "Apps" menu (plain text); empty = "Apps" + help_text: + type: string + description: Help text below the login form (HTML) + ui_footer: + type: string + description: Footer of every page (HTML) + ui_announcement_text: + type: string + description: Announcement for all logged-in accounts and on the login page (HTML) + ui_announcement_type: + type: string + enum: + - info + - warning + - danger + description: Style of the announcement; other values are saved as empty + ui_announcement_active: + type: [integer, string, boolean] + description: Not empty and not 0 = show the announcement + default: 0 + required: + - attr + example: + attr: + title_name: Example Mail + main_name: Example Mail + apps_name: Apps + help_text: "Questions? Write to support@example.org." + ui_footer: "Imprint" + ui_announcement_text: Maintenance on Saturday from 8 to 10 am. + ui_announcement_type: warning + ui_announcement_active: 1 + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" + /api/v1/edit/ui_theme: + post: + summary: Edit UI theme + description: >- + Selects the UI theme by its folder name in `data/web/css/themes/`. + + + Messages: `ui_theme_modified`; error `ui_theme_invalid`. + operationId: editUiTheme + tags: + - UI customization + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + attr: + type: object + properties: + ui_theme: + description: Folder name of the theme, empty = default theme; of a list only the first entry counts + oneOf: + - type: string + - type: array + items: + type: string + required: + - attr + example: + attr: + ui_theme: servercow + responses: + "200": + $ref: "#/components/responses/WriteResult" + "401": + $ref: "#/components/responses/Unauthorized" + "403": + $ref: "#/components/responses/Forbidden" tags: - name: Domains - description: You can create antispam whitelist and blacklist policies + description: >- + Domains, alias domains, domain templates, MTA-STS policies and + domain-wide footers - name: Domain antispam policies - description: You can edit the Domain Antispam policies + description: Sender allow lists (whitelists) and deny lists (blacklists) of domains - name: Mailboxes - description: You can manage mailboxes + description: Mailboxes, their templates, tags, ACLs and logins - name: Aliases description: You can manage aliases - name: Sync jobs description: Using Syncjobs you can sync your mails with other email servers - - name: Fordwarding Hosts - description: Forwarding Hosts enable you to send mail using a relay - name: Logs - description: Get all mailcow system logs + description: Logs of the mailcow containers and the UI - name: Queue Manager description: Manage the postfix mail queue - name: Quarantine @@ -7996,32 +14434,60 @@ tags: - name: Fail2Ban description: Manage the Netfilter fail2ban options - name: DKIM - description: Manage DKIM keys + description: Generate, import, copy and delete DKIM keys - name: Domain admin - description: Create or udpdate domain admin users + description: Domain administrators, their domains and ACLs - name: Single Sign-On - description: Issue tokens for users + description: Login tokens for domain administrators - name: Address Rewriting - description: Create BCC maps or recipient maps + description: BCC maps and recipient maps - name: Outgoing TLS Policy Map Overrides - description: Force global TLS policys + description: TLS policies for outgoing connections to single destinations - name: oAuth Clients - description: Use mailcow as a oAuth server + description: Clients that use mailcow as OAuth2 server - name: API Keys - description: Manage API keys + description: API keys; service keys from mailcow.conf are read-only - name: Groups description: Mailbox groups (distribution lists, send-as rights, templates) - name: Routing - description: Define your own email routes + description: Sender-dependent transports (relay hosts) and transport maps for outgoing mail - name: Resources - description: Manage ressources + description: Bookable resources (rooms, equipment, groups) for SOGo - name: App Passwords - description: Create mailbox app passwords + description: Separate passwords of a mailbox for single clients and protocols - name: Status - description: Get the status of your cow + description: Containers, mail storage, host and version - name: Ratelimits description: Edit domain ratelimits - name: Cross-Origin Resource Sharing (CORS) - description: Manage Cross-Origin Resource Sharing (CORS) settings + description: Origins and methods that may call the API from a browser - name: Identity Provider - description: Manage external Identity Provider settings + description: >- + External Identity Provider (Keycloak, OpenID Connect, LDAP): settings, + identity sync and links of mailboxes + - name: Mailbox user settings + description: >- + Settings a mailbox user changes on its own page (with the matching user + ACL): time-limited aliases, spam score, TLS policy, tagged mail, + Pushover. API keys can change them for any mailbox and must name the + mailbox; a mailbox user only for its own. + - name: Mailbox filters + description: Sieve filters of mailboxes, managed by admins and domain admins + - name: Mailbox antispam policies + description: Sender allow and deny lists of mailboxes + - name: Forwarding Hosts + description: >- + Hosts whose incoming mail is accepted unconditionally, e.g. servers that + forward mail to mailcow + - name: Rspamd + description: Rspamd settings rules, global regex maps, presets and statistics + - name: Global filters + description: Global Sieve filters that run before and after the filters of the mailboxes, Sieve presets + - name: Quota notifications + description: Mails to users whose mailbox is nearly full + - name: Administrators + description: Administrator accounts + - name: Password policy + description: Password rules and the password reset e-mail + - name: UI customization + description: Texts, links, login page and theme of the mailcow UI diff --git a/data/web/api/swagger-ui-bundle.js b/data/web/api/swagger-ui-bundle.js index b628d7fef..ac88a259f 100644 --- a/data/web/api/swagger-ui-bundle.js +++ b/data/web/api/swagger-ui-bundle.js @@ -1,3 +1,2 @@ /*! For license information please see swagger-ui-bundle.js.LICENSE.txt */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SwaggerUIBundle=t():e.SwaggerUIBundle=t()}(this,(()=>(()=>{var e={17967:(e,t)=>{"use strict";t.N=void 0;var n=/^([^\w]*)(javascript|data|vbscript)/im,r=/&#(\w+)(^\w|;)?/g,o=/&(newline|tab);/gi,s=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,i=/^.+(:|:)/gim,a=[".","/"];t.N=function(e){var t,l=(t=e||"",t.replace(r,(function(e,t){return String.fromCharCode(t)}))).replace(o,"").replace(s,"").trim();if(!l)return"about:blank";if(function(e){return a.indexOf(e[0])>-1}(l))return l;var c=l.match(i);if(!c)return l;var u=c[0];return n.test(u)?"about:blank":l}},53795:(e,t,n)=>{"use strict";n.d(t,{Z:()=>P});var r=n(23101),o=n.n(r),s=n(61125),i=n.n(s),a=n(11882),l=n.n(a),c=n(97606),u=n.n(c),p=n(67294),h=n(43393);function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function d(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=function(e,t){return function(n){if("string"==typeof n)return(0,h.is)(t[n],e[n]);if(Array.isArray(n))return(0,h.is)(x(t,n),x(e,n));throw new TypeError("Invalid key: expected Array or string: "+n)}}(t,n),o=e||Object.keys(function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};return!S(this.updateOnProps,this.props,e,"updateOnProps")||!S(this.updateOnStates,this.state,t,"updateOnStates")}}],r&&d(n.prototype,r),o&&d(n,o),t}(p.Component);var j=n(23930),O=n.n(j),k=n(45697),A=n.n(k);const C=e=>{const t=e.replace(/~1/g,"/").replace(/~0/g,"~");try{return decodeURIComponent(t)}catch{return t}};class P extends _{constructor(){super(...arguments),i()(this,"getModelName",(e=>-1!==l()(e).call(e,"#/definitions/")?C(e.replace(/^.*#\/definitions\//,"")):-1!==l()(e).call(e,"#/components/schemas/")?C(e.replace(/^.*#\/components\/schemas\//,"")):void 0)),i()(this,"getRefSchema",(e=>{let{specSelectors:t}=this.props;return t.findDefinition(e)}))}render(){let{getComponent:e,getConfigs:t,specSelectors:r,schema:s,required:i,name:a,isRef:l,specPath:c,displayName:u,includeReadOnly:h,includeWriteOnly:f}=this.props;const d=e("ObjectModel"),m=e("ArrayModel"),g=e("PrimitiveModel");let y="object",v=s&&s.get("$$ref");if(!a&&v&&(a=this.getModelName(v)),!s&&v&&(s=this.getRefSchema(a)),!s)return p.createElement("span",{className:"model model-title"},p.createElement("span",{className:"model-title__text"},u||a),p.createElement("img",{src:n(2517),height:"20px",width:"20px"}));const b=r.isOAS3()&&s.get("deprecated");switch(l=void 0!==l?l:!!v,y=s&&s.get("type")||y,y){case"object":return p.createElement(d,o()({className:"object"},this.props,{specPath:c,getConfigs:t,schema:s,name:a,deprecated:b,isRef:l,includeReadOnly:h,includeWriteOnly:f}));case"array":return p.createElement(m,o()({className:"array"},this.props,{getConfigs:t,schema:s,name:a,deprecated:b,required:i,includeReadOnly:h,includeWriteOnly:f}));default:return p.createElement(g,o()({},this.props,{getComponent:e,getConfigs:t,schema:s,name:a,deprecated:b,required:i}))}}}i()(P,"propTypes",{schema:u()(O()).isRequired,getComponent:A().func.isRequired,getConfigs:A().func.isRequired,specSelectors:A().object.isRequired,name:A().string,displayName:A().string,isRef:A().bool,required:A().bool,expandDepth:A().number,depth:A().number,specPath:O().list.isRequired,includeReadOnly:A().bool,includeWriteOnly:A().bool})},5623:(e,t,n)=>{"use strict";n.d(t,{Z:()=>h});var r=n(61125),o=n.n(r),s=n(28222),i=n.n(s),a=n(67294),l=n(84564),c=n.n(l),u=n(90242),p=n(27504);class h extends a.Component{constructor(e,t){super(e,t),o()(this,"getDefinitionUrl",(()=>{let{specSelectors:e}=this.props;return new(c())(e.url(),p.Z.location).toString()}));let{getConfigs:n}=e,{validatorUrl:r}=n();this.state={url:this.getDefinitionUrl(),validatorUrl:void 0===r?"https://validator.swagger.io/validator":r}}UNSAFE_componentWillReceiveProps(e){let{getConfigs:t}=e,{validatorUrl:n}=t();this.setState({url:this.getDefinitionUrl(),validatorUrl:void 0===n?"https://validator.swagger.io/validator":n})}render(){let{getConfigs:e}=this.props,{spec:t}=e(),n=(0,u.Nm)(this.state.validatorUrl);return"object"==typeof t&&i()(t).length?null:this.state.url&&(0,u.hW)(this.state.validatorUrl)&&(0,u.hW)(this.state.url)?a.createElement("span",{className:"float-right"},a.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:`${n}/debug?url=${encodeURIComponent(this.state.url)}`},a.createElement(f,{src:`${n}?url=${encodeURIComponent(this.state.url)}`,alt:"Online validator badge"}))):null}}class f extends a.Component{constructor(e){super(e),this.state={loaded:!1,error:!1}}componentDidMount(){const e=new Image;e.onload=()=>{this.setState({loaded:!0})},e.onerror=()=>{this.setState({error:!0})},e.src=this.props.src}UNSAFE_componentWillReceiveProps(e){if(e.src!==this.props.src){const t=new Image;t.onload=()=>{this.setState({loaded:!0})},t.onerror=()=>{this.setState({error:!0})},t.src=e.src}}render(){return this.state.error?a.createElement("img",{alt:"Error"}):this.state.loaded?a.createElement("img",{src:this.props.src,alt:this.props.alt}):null}}},4599:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ye,s:()=>ve});var r=n(67294),o=n(89927);function s(e,t){if(Array.prototype.indexOf)return e.indexOf(t);for(var n=0,r=e.length;n=0;n--)!0===t(e[n])&&e.splice(n,1)}function a(e){throw new Error("Unhandled case for value: '".concat(e,"'"))}var l=function(){function e(e){void 0===e&&(e={}),this.tagName="",this.attrs={},this.innerHTML="",this.whitespaceRegex=/\s+/,this.tagName=e.tagName||"",this.attrs=e.attrs||{},this.innerHTML=e.innerHtml||e.innerHTML||""}return e.prototype.setTagName=function(e){return this.tagName=e,this},e.prototype.getTagName=function(){return this.tagName||""},e.prototype.setAttr=function(e,t){return this.getAttrs()[e]=t,this},e.prototype.getAttr=function(e){return this.getAttrs()[e]},e.prototype.setAttrs=function(e){return Object.assign(this.getAttrs(),e),this},e.prototype.getAttrs=function(){return this.attrs||(this.attrs={})},e.prototype.setClass=function(e){return this.setAttr("class",e)},e.prototype.addClass=function(e){for(var t,n=this.getClass(),r=this.whitespaceRegex,o=n?n.split(r):[],i=e.split(r);t=i.shift();)-1===s(o,t)&&o.push(t);return this.getAttrs().class=o.join(" "),this},e.prototype.removeClass=function(e){for(var t,n=this.getClass(),r=this.whitespaceRegex,o=n?n.split(r):[],i=e.split(r);o.length&&(t=i.shift());){var a=s(o,t);-1!==a&&o.splice(a,1)}return this.getAttrs().class=o.join(" "),this},e.prototype.getClass=function(){return this.getAttrs().class||""},e.prototype.hasClass=function(e){return-1!==(" "+this.getClass()+" ").indexOf(" "+e+" ")},e.prototype.setInnerHTML=function(e){return this.innerHTML=e,this},e.prototype.setInnerHtml=function(e){return this.setInnerHTML(e)},e.prototype.getInnerHTML=function(){return this.innerHTML||""},e.prototype.getInnerHtml=function(){return this.getInnerHTML()},e.prototype.toAnchorString=function(){var e=this.getTagName(),t=this.buildAttrsStr();return["<",e,t=t?" "+t:"",">",this.getInnerHtml(),""].join("")},e.prototype.buildAttrsStr=function(){if(!this.attrs)return"";var e=this.getAttrs(),t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n+'="'+e[n]+'"');return t.join(" ")},e}();var c=function(){function e(e){void 0===e&&(e={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=e.newWindow||!1,this.truncate=e.truncate||{},this.className=e.className||""}return e.prototype.build=function(e){return new l({tagName:"a",attrs:this.createAttrs(e),innerHtml:this.processAnchorText(e.getAnchorText())})},e.prototype.createAttrs=function(e){var t={href:e.getAnchorHref()},n=this.createCssClass(e);return n&&(t.class=n),this.newWindow&&(t.target="_blank",t.rel="noopener noreferrer"),this.truncate&&this.truncate.length&&this.truncate.length=a)return l.host.length==t?(l.host.substr(0,t-o)+n).substr(0,a+r):i(u,a).substr(0,a+r);var p="";if(l.path&&(p+="/"+l.path),l.query&&(p+="?"+l.query),p){if((u+p).length>=a)return(u+p).length==t?(u+p).substr(0,t):(u+i(p,a-u.length)).substr(0,a+r);u+=p}if(l.fragment){var h="#"+l.fragment;if((u+h).length>=a)return(u+h).length==t?(u+h).substr(0,t):(u+i(h,a-u.length)).substr(0,a+r);u+=h}if(l.scheme&&l.host){var f=l.scheme+"://";if((u+f).length0&&(d=u.substr(-1*Math.floor(a/2))),(u.substr(0,Math.ceil(a/2))+n+d).substr(0,a+r)}(e,n):"middle"===r?function(e,t,n){if(e.length<=t)return e;var r,o;null==n?(n="…",r=8,o=3):(r=n.length,o=n.length);var s=t-o,i="";return s>0&&(i=e.substr(-1*Math.floor(s/2))),(e.substr(0,Math.ceil(s/2))+n+i).substr(0,s+r)}(e,n):function(e,t,n){return function(e,t,n){var r;return e.length>t&&(null==n?(n="…",r=3):r=n.length,e=e.substring(0,t-r)+n),e}(e,t,n)}(e,n)},e}(),u=function(){function e(e){this.__jsduckDummyDocProp=null,this.matchedText="",this.offset=0,this.tagBuilder=e.tagBuilder,this.matchedText=e.matchedText,this.offset=e.offset}return e.prototype.getMatchedText=function(){return this.matchedText},e.prototype.setOffset=function(e){this.offset=e},e.prototype.getOffset=function(){return this.offset},e.prototype.getCssClassSuffixes=function(){return[this.getType()]},e.prototype.buildTag=function(){return this.tagBuilder.build(this)},e}(),p=function(e,t){return p=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},p(e,t)};function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}p(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var f=function(){return f=Object.assign||function(e){for(var t,n=1,r=arguments.length;n-1},e.isValidUriScheme=function(e){var t=e.match(this.uriSchemeRegex),n=t&&t[0].toLowerCase();return"javascript:"!==n&&"vbscript:"!==n},e.urlMatchDoesNotHaveProtocolOrDot=function(e,t){return!(!e||t&&this.hasFullProtocolRegex.test(t)||-1!==e.indexOf("."))},e.urlMatchDoesNotHaveAtLeastOneWordChar=function(e,t){return!(!e||!t)&&(!this.hasFullProtocolRegex.test(t)&&!this.hasWordCharAfterProtocolRegex.test(e))},e.hasFullProtocolRegex=/^[A-Za-z][-.+A-Za-z0-9]*:\/\//,e.uriSchemeRegex=/^[A-Za-z][-.+A-Za-z0-9]*:/,e.hasWordCharAfterProtocolRegex=new RegExp(":[^\\s]*?["+k+"]"),e.ipRegex=/[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?(:[0-9]*)?\/?$/,e}(),V=(d=new RegExp("[/?#](?:["+N+"\\-+&@#/%=~_()|'$*\\[\\]{}?!:,.;^✓]*["+N+"\\-+&@#/%=~_()|'$*\\[\\]{}✓])?"),new RegExp(["(?:","(",/(?:[A-Za-z][-.+A-Za-z0-9]{0,63}:(?![A-Za-z][-.+A-Za-z0-9]{0,63}:\/\/)(?!\d+\/?)(?:\/\/)?)/.source,D(2),")","|","(","(//)?",/(?:www\.)/.source,D(6),")","|","(","(//)?",D(10)+"\\.",L.source,"(?![-"+P+"])",")",")","(?::[0-9]+)?","(?:"+d.source+")?"].join(""),"gi")),W=new RegExp("["+N+"]"),J=function(e){function t(t){var n=e.call(this,t)||this;return n.stripPrefix={scheme:!0,www:!0},n.stripTrailingSlash=!0,n.decodePercentEncoding=!0,n.matcherRegex=V,n.wordCharRegExp=W,n.stripPrefix=t.stripPrefix,n.stripTrailingSlash=t.stripTrailingSlash,n.decodePercentEncoding=t.decodePercentEncoding,n}return h(t,e),t.prototype.parseMatches=function(e){for(var t,n=this.matcherRegex,r=this.stripPrefix,o=this.stripTrailingSlash,s=this.decodePercentEncoding,i=this.tagBuilder,a=[],l=function(){var n=t[0],l=t[1],u=t[4],p=t[5],h=t[9],f=t.index,d=p||h,m=e.charAt(f-1);if(!z.isValid(n,l))return"continue";if(f>0&&"@"===m)return"continue";if(f>0&&d&&c.wordCharRegExp.test(m))return"continue";if(/\?$/.test(n)&&(n=n.substr(0,n.length-1)),c.matchHasUnbalancedClosingParen(n))n=n.substr(0,n.length-1);else{var g=c.matchHasInvalidCharAfterTld(n,l);g>-1&&(n=n.substr(0,g))}var y=["http://","https://"].find((function(e){return!!l&&-1!==l.indexOf(e)}));if(y){var v=n.indexOf(y);n=n.substr(v),l=l.substr(v),f+=v}var w=l?"scheme":u?"www":"tld",E=!!l;a.push(new b({tagBuilder:i,matchedText:n,offset:f,urlMatchType:w,url:n,protocolUrlMatch:E,protocolRelativeMatch:!!d,stripPrefix:r,stripTrailingSlash:o,decodePercentEncoding:s}))},c=this;null!==(t=n.exec(e));)l();return a},t.prototype.matchHasUnbalancedClosingParen=function(e){var t,n=e.charAt(e.length-1);if(")"===n)t="(";else if("]"===n)t="[";else{if("}"!==n)return!1;t="{"}for(var r=0,o=0,s=e.length-1;o-1&&s-i<=140){var o=e.slice(i,s),a=new g({tagBuilder:t,matchedText:o,offset:i,serviceName:n,hashtag:o.slice(1)});r.push(a)}}},t}(w),G=["twitter","facebook","instagram","tiktok"],Z=new RegExp("".concat(/(?:(?:(?:(\+)?\d{1,3}[-\040.]?)?\(?\d{3}\)?[-\040.]?\d{3}[-\040.]?\d{4})|(?:(\+)(?:9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-\040.]?(?:\d[-\040.]?){6,12}\d+))([,;]+[0-9]+#?)*/.source,"|").concat(/(0([1-9]{1}-?[1-9]\d{3}|[1-9]{2}-?\d{3}|[1-9]{2}\d{1}-?\d{2}|[1-9]{2}\d{2}-?\d{1})-?\d{4}|0[789]0-?\d{4}-?\d{4}|050-?\d{4}-?\d{4})/.source),"g"),Y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.matcherRegex=Z,t}return h(t,e),t.prototype.parseMatches=function(e){for(var t,n=this.matcherRegex,r=this.tagBuilder,o=[];null!==(t=n.exec(e));){var s=t[0],i=s.replace(/[^0-9,;#]/g,""),a=!(!t[1]&&!t[2]),l=0==t.index?"":e.substr(t.index-1,1),c=e.substr(t.index+s.length,1),u=!l.match(/\d/)&&!c.match(/\d/);this.testMatch(t[3])&&this.testMatch(s)&&u&&o.push(new v({tagBuilder:r,matchedText:s,offset:t.index,number:i,plusSign:a}))}return o},t.prototype.testMatch=function(e){return S.test(e)},t}(w),X=new RegExp("@[_".concat(N,"]{1,50}(?![_").concat(N,"])"),"g"),Q=new RegExp("@[_.".concat(N,"]{1,30}(?![_").concat(N,"])"),"g"),ee=new RegExp("@[-_.".concat(N,"]{1,50}(?![-_").concat(N,"])"),"g"),te=new RegExp("@[_.".concat(N,"]{1,23}[_").concat(N,"](?![_").concat(N,"])"),"g"),ne=new RegExp("[^"+N+"]"),re=function(e){function t(t){var n=e.call(this,t)||this;return n.serviceName="twitter",n.matcherRegexes={twitter:X,instagram:Q,soundcloud:ee,tiktok:te},n.nonWordCharRegex=ne,n.serviceName=t.serviceName,n}return h(t,e),t.prototype.parseMatches=function(e){var t,n=this.serviceName,r=this.matcherRegexes[this.serviceName],o=this.nonWordCharRegex,s=this.tagBuilder,i=[];if(!r)return i;for(;null!==(t=r.exec(e));){var a=t.index,l=e.charAt(a-1);if(0===a||o.test(l)){var c=t[0].replace(/\.+$/g,""),u=c.slice(1);i.push(new y({tagBuilder:s,matchedText:c,offset:a,serviceName:n,mention:u}))}}return i},t}(w);function oe(e,t){for(var n,r=t.onOpenTag,o=t.onCloseTag,s=t.onText,i=t.onComment,l=t.onDoctype,c=new se,u=0,p=e.length,h=0,d=0,m=c;u"===e?(m=new se(f(f({},m),{name:J()})),W()):E.test(e)||x.test(e)||":"===e||z()}function w(e){">"===e?z():E.test(e)?h=3:z()}function S(e){_.test(e)||("/"===e?h=12:">"===e?W():"<"===e?V():"="===e||j.test(e)||O.test(e)?z():h=5)}function k(e){_.test(e)?h=6:"/"===e?h=12:"="===e?h=7:">"===e?W():"<"===e?V():j.test(e)&&z()}function A(e){_.test(e)||("/"===e?h=12:"="===e?h=7:">"===e?W():"<"===e?V():j.test(e)?z():h=5)}function C(e){_.test(e)||('"'===e?h=8:"'"===e?h=9:/[>=`]/.test(e)?z():"<"===e?V():h=10)}function P(e){'"'===e&&(h=11)}function N(e){"'"===e&&(h=11)}function I(e){_.test(e)?h=4:">"===e?W():"<"===e&&V()}function T(e){_.test(e)?h=4:"/"===e?h=12:">"===e?W():"<"===e?V():(h=4,u--)}function R(e){">"===e?(m=new se(f(f({},m),{isClosing:!0})),W()):h=4}function M(t){"--"===e.substr(u,2)?(u+=2,m=new se(f(f({},m),{type:"comment"})),h=14):"DOCTYPE"===e.substr(u,7).toUpperCase()?(u+=7,m=new se(f(f({},m),{type:"doctype"})),h=20):z()}function D(e){"-"===e?h=15:">"===e?z():h=16}function F(e){"-"===e?h=18:">"===e?z():h=16}function L(e){"-"===e&&(h=17)}function B(e){h="-"===e?18:16}function $(e){">"===e?W():"!"===e?h=19:"-"===e||(h=16)}function q(e){"-"===e?h=17:">"===e?W():h=16}function U(e){">"===e?W():"<"===e&&V()}function z(){h=0,m=c}function V(){h=1,m=new se({idx:u})}function W(){var t=e.slice(d,m.idx);t&&s(t,d),"comment"===m.type?i(m.idx):"doctype"===m.type?l(m.idx):(m.isOpening&&r(m.name,m.idx),m.isClosing&&o(m.name,m.idx)),z(),d=u+1}function J(){var t=m.idx+(m.isClosing?2:1);return e.slice(t,u).toLowerCase()}d=0&&r++},onText:function(e,n){if(0===r){var s=function(e,t){if(!t.global)throw new Error("`splitRegex` must have the 'g' flag set");for(var n,r=[],o=0;n=t.exec(e);)r.push(e.substring(o,n.index)),r.push(n[0]),o=n.index+n[0].length;return r.push(e.substring(o)),r}(e,/( | |<|<|>|>|"|"|')/gi),i=n;s.forEach((function(e,n){if(n%2==0){var r=t.parseText(e,i);o.push.apply(o,r)}i+=e.length}))}},onCloseTag:function(e){n.indexOf(e)>=0&&(r=Math.max(r-1,0))},onComment:function(e){},onDoctype:function(e){}}),o=this.compactMatches(o),o=this.removeUnwantedMatches(o)},e.prototype.compactMatches=function(e){e.sort((function(e,t){return e.getOffset()-t.getOffset()}));for(var t=0;to?t:t+1;e.splice(i,1);continue}if(e[t+1].getOffset()/g,">"));for(var t=this.parse(e),n=[],r=0,o=0,s=t.length;o/i.test(e)}function ce(){var e=[],t=new ie({stripPrefix:!1,url:!0,email:!0,replaceFn:function(t){switch(t.getType()){case"url":e.push({text:t.matchedText,url:t.getUrl()});break;case"email":e.push({text:t.matchedText,url:"mailto:"+t.getEmail().replace(/^mailto:/i,"")})}return!1}});return{links:e,autolinker:t}}function ue(e){var t,n,r,o,s,i,a,l,c,u,p,h,f,d,m=e.tokens,g=null;for(n=0,r=m.length;n=0;t--)if("link_close"!==(s=o[t]).type){if("htmltag"===s.type&&(d=s.content,/^\s]/i.test(d)&&p>0&&p--,le(s.content)&&p++),!(p>0)&&"text"===s.type&&ae.test(s.content)){if(g||(h=(g=ce()).links,f=g.autolinker),i=s.content,h.length=0,f.link(i),!h.length)continue;for(a=[],u=s.level,l=0;l({useUnsafeMarkdown:!1})};const ye=ge;function ve(e){let{useUnsafeMarkdown:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=t,r=t?[]:["style","class"];return t&&!ve.hasWarnedAboutDeprecation&&(console.warn("useUnsafeMarkdown display configuration parameter is deprecated since >3.26.0 and will be removed in v4.0.0."),ve.hasWarnedAboutDeprecation=!0),fe().sanitize(e,{ADD_ATTR:["target"],FORBID_TAGS:["style","form"],ALLOW_DATA_ATTR:n,FORBID_ATTR:r})}ve.hasWarnedAboutDeprecation=!1},45308:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>h});var r,o=n(86),s=n.n(o),i=n(8712),a=n.n(i),l=n(90242),c=n(27621);const u=n(95102),p={},h=p;s()(r=a()(u).call(u)).call(r,(function(e){if("./index.js"===e)return;let t=u(e);p[(0,l.Zl)(e)]=t.default?t.default:t})),p.SafeRender=c.default},55812:(e,t,n)=>{"use strict";n.r(t),n.d(t,{AUTHORIZE:()=>h,AUTHORIZE_OAUTH2:()=>m,CONFIGURE_AUTH:()=>y,LOGOUT:()=>f,PRE_AUTHORIZE_OAUTH2:()=>d,RESTORE_AUTHORIZATION:()=>v,SHOW_AUTH_POPUP:()=>p,VALIDATE:()=>g,authPopup:()=>M,authorize:()=>w,authorizeAccessCodeWithBasicAuthentication:()=>P,authorizeAccessCodeWithFormParams:()=>C,authorizeApplication:()=>A,authorizeOauth2:()=>j,authorizeOauth2WithPersistOption:()=>O,authorizePassword:()=>k,authorizeRequest:()=>N,authorizeWithPersistOption:()=>E,configureAuth:()=>I,logout:()=>x,logoutWithPersistOption:()=>S,persistAuthorizationIfNeeded:()=>R,preAuthorizeImplicit:()=>_,restoreAuthorization:()=>T,showDefinitions:()=>b});var r=n(35627),o=n.n(r),s=n(76986),i=n.n(s),a=n(84564),l=n.n(a),c=n(27504),u=n(90242);const p="show_popup",h="authorize",f="logout",d="pre_authorize_oauth2",m="authorize_oauth2",g="validate",y="configure_auth",v="restore_authorization";function b(e){return{type:p,payload:e}}function w(e){return{type:h,payload:e}}const E=e=>t=>{let{authActions:n}=t;n.authorize(e),n.persistAuthorizationIfNeeded()};function x(e){return{type:f,payload:e}}const S=e=>t=>{let{authActions:n}=t;n.logout(e),n.persistAuthorizationIfNeeded()},_=e=>t=>{let{authActions:n,errActions:r}=t,{auth:s,token:i,isValid:a}=e,{schema:l,name:u}=s,p=l.get("flow");delete c.Z.swaggerUIRedirectOauth2,"accessCode"===p||a||r.newAuthErr({authId:u,source:"auth",level:"warning",message:"Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"}),i.error?r.newAuthErr({authId:u,source:"auth",level:"error",message:o()(i)}):n.authorizeOauth2WithPersistOption({auth:s,token:i})};function j(e){return{type:m,payload:e}}const O=e=>t=>{let{authActions:n}=t;n.authorizeOauth2(e),n.persistAuthorizationIfNeeded()},k=e=>t=>{let{authActions:n}=t,{schema:r,name:o,username:s,password:a,passwordType:l,clientId:c,clientSecret:p}=e,h={grant_type:"password",scope:e.scopes.join(" "),username:s,password:a},f={};switch(l){case"request-body":!function(e,t,n){t&&i()(e,{client_id:t});n&&i()(e,{client_secret:n})}(h,c,p);break;case"basic":f.Authorization="Basic "+(0,u.r3)(c+":"+p);break;default:console.warn(`Warning: invalid passwordType ${l} was passed, not including client id and secret`)}return n.authorizeRequest({body:(0,u.GZ)(h),url:r.get("tokenUrl"),name:o,headers:f,query:{},auth:e})};const A=e=>t=>{let{authActions:n}=t,{schema:r,scopes:o,name:s,clientId:i,clientSecret:a}=e,l={Authorization:"Basic "+(0,u.r3)(i+":"+a)},c={grant_type:"client_credentials",scope:o.join(" ")};return n.authorizeRequest({body:(0,u.GZ)(c),name:s,url:r.get("tokenUrl"),auth:e,headers:l})},C=e=>{let{auth:t,redirectUrl:n}=e;return e=>{let{authActions:r}=e,{schema:o,name:s,clientId:i,clientSecret:a,codeVerifier:l}=t,c={grant_type:"authorization_code",code:t.code,client_id:i,client_secret:a,redirect_uri:n,code_verifier:l};return r.authorizeRequest({body:(0,u.GZ)(c),name:s,url:o.get("tokenUrl"),auth:t})}},P=e=>{let{auth:t,redirectUrl:n}=e;return e=>{let{authActions:r}=e,{schema:o,name:s,clientId:i,clientSecret:a,codeVerifier:l}=t,c={Authorization:"Basic "+(0,u.r3)(i+":"+a)},p={grant_type:"authorization_code",code:t.code,client_id:i,redirect_uri:n,code_verifier:l};return r.authorizeRequest({body:(0,u.GZ)(p),name:s,url:o.get("tokenUrl"),auth:t,headers:c})}},N=e=>t=>{let n,{fn:r,getConfigs:s,authActions:a,errActions:c,oas3Selectors:u,specSelectors:p,authSelectors:h}=t,{body:f,query:d={},headers:m={},name:g,url:y,auth:v}=e,{additionalQueryStringParams:b}=h.getConfigs()||{};if(p.isOAS3()){let e=u.serverEffectiveValue(u.selectedServer());n=l()(y,e,!0)}else n=l()(y,p.url(),!0);"object"==typeof b&&(n.query=i()({},n.query,b));const w=n.toString();let E=i()({Accept:"application/json, text/plain, */*","Content-Type":"application/x-www-form-urlencoded","X-Requested-With":"XMLHttpRequest"},m);r.fetch({url:w,method:"post",headers:E,query:d,body:f,requestInterceptor:s().requestInterceptor,responseInterceptor:s().responseInterceptor}).then((function(e){let t=JSON.parse(e.data),n=t&&(t.error||""),r=t&&(t.parseError||"");e.ok?n||r?c.newAuthErr({authId:g,level:"error",source:"auth",message:o()(t)}):a.authorizeOauth2WithPersistOption({auth:v,token:t}):c.newAuthErr({authId:g,level:"error",source:"auth",message:e.statusText})})).catch((e=>{let t=new Error(e).message;if(e.response&&e.response.data){const n=e.response.data;try{const e="string"==typeof n?JSON.parse(n):n;e.error&&(t+=`, error: ${e.error}`),e.error_description&&(t+=`, description: ${e.error_description}`)}catch(e){}}c.newAuthErr({authId:g,level:"error",source:"auth",message:t})}))};function I(e){return{type:y,payload:e}}function T(e){return{type:v,payload:e}}const R=()=>e=>{let{authSelectors:t,getConfigs:n}=e;if(!n().persistAuthorization)return;const r=t.authorized().toJS();localStorage.setItem("authorized",o()(r))},M=(e,t)=>()=>{c.Z.swaggerUIRedirectOauth2=t,c.Z.open(e)}},53779:(e,t,n)=>{"use strict";n.r(t),n.d(t,{loaded:()=>r});const r=(e,t)=>n=>{const{getConfigs:r,authActions:o}=t,s=r();if(e(n),s.persistAuthorization){const e=localStorage.getItem("authorized");e&&o.restoreAuthorization({authorized:JSON.parse(e)})}}},93705:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p,preauthorizeApiKey:()=>f,preauthorizeBasic:()=>h});var r=n(11189),o=n.n(r),s=n(43962),i=n(55812),a=n(60035),l=n(60489),c=n(53779),u=n(22849);function p(){return{afterLoad(e){this.rootInjects=this.rootInjects||{},this.rootInjects.initOAuth=e.authActions.configureAuth,this.rootInjects.preauthorizeApiKey=o()(f).call(f,null,e),this.rootInjects.preauthorizeBasic=o()(h).call(h,null,e)},statePlugins:{auth:{reducers:s.default,actions:i,selectors:a,wrapActions:{authorize:u.authorize,logout:u.logout}},configs:{wrapActions:{loaded:c.loaded}},spec:{wrapActions:{execute:l.execute}}}}}function h(e,t,n,r){const{authActions:{authorize:o},specSelectors:{specJson:s,isOAS3:i}}=e,a=i()?["components","securitySchemes"]:["securityDefinitions"],l=s().getIn([...a,t]);return l?o({[t]:{value:{username:n,password:r},schema:l.toJS()}}):null}function f(e,t,n){const{authActions:{authorize:r},specSelectors:{specJson:o,isOAS3:s}}=e,i=s()?["components","securitySchemes"]:["securityDefinitions"],a=o().getIn([...i,t]);return a?r({[t]:{value:n,schema:a.toJS()}}):null}},43962:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var r=n(86),o=n.n(r),s=n(76986),i=n.n(s),a=n(43393),l=n(90242),c=n(55812);const u={[c.SHOW_AUTH_POPUP]:(e,t)=>{let{payload:n}=t;return e.set("showDefinitions",n)},[c.AUTHORIZE]:(e,t)=>{var n;let{payload:r}=t,s=(0,a.fromJS)(r),i=e.get("authorized")||(0,a.Map)();return o()(n=s.entrySeq()).call(n,(t=>{let[n,r]=t;if(!(0,l.Wl)(r.getIn))return e.set("authorized",i);let o=r.getIn(["schema","type"]);if("apiKey"===o||"http"===o)i=i.set(n,r);else if("basic"===o){let e=r.getIn(["value","username"]),t=r.getIn(["value","password"]);i=i.setIn([n,"value"],{username:e,header:"Basic "+(0,l.r3)(e+":"+t)}),i=i.setIn([n,"schema"],r.get("schema"))}})),e.set("authorized",i)},[c.AUTHORIZE_OAUTH2]:(e,t)=>{let n,{payload:r}=t,{auth:o,token:s}=r;o.token=i()({},s),n=(0,a.fromJS)(o);let l=e.get("authorized")||(0,a.Map)();return l=l.set(n.get("name"),n),e.set("authorized",l)},[c.LOGOUT]:(e,t)=>{let{payload:n}=t,r=e.get("authorized").withMutations((e=>{o()(n).call(n,(t=>{e.delete(t)}))}));return e.set("authorized",r)},[c.CONFIGURE_AUTH]:(e,t)=>{let{payload:n}=t;return e.set("configs",n)},[c.RESTORE_AUTHORIZATION]:(e,t)=>{let{payload:n}=t;return e.set("authorized",(0,a.fromJS)(n.authorized))}}},60035:(e,t,n)=>{"use strict";n.r(t),n.d(t,{authorized:()=>x,definitionsForRequirements:()=>E,definitionsToAuthorize:()=>b,getConfigs:()=>_,getDefinitionsByNames:()=>w,isAuthorized:()=>S,shownDefinitions:()=>v});var r=n(86),o=n.n(r),s=n(51679),i=n.n(s),a=n(14418),l=n.n(a),c=n(11882),u=n.n(c),p=n(97606),h=n.n(p),f=n(28222),d=n.n(f),m=n(20573),g=n(43393);const y=e=>e,v=(0,m.P1)(y,(e=>e.get("showDefinitions"))),b=(0,m.P1)(y,(()=>e=>{var t;let{specSelectors:n}=e,r=n.securityDefinitions()||(0,g.Map)({}),s=(0,g.List)();return o()(t=r.entrySeq()).call(t,(e=>{let[t,n]=e,r=(0,g.Map)();r=r.set(t,n),s=s.push(r)})),s})),w=(e,t)=>e=>{var n;let{specSelectors:r}=e;console.warn("WARNING: getDefinitionsByNames is deprecated and will be removed in the next major version.");let s=r.securityDefinitions(),i=(0,g.List)();return o()(n=t.valueSeq()).call(n,(e=>{var t;let n=(0,g.Map)();o()(t=e.entrySeq()).call(t,(e=>{let t,[r,i]=e,a=s.get(r);var l;"oauth2"===a.get("type")&&i.size&&(t=a.get("scopes"),o()(l=t.keySeq()).call(l,(e=>{i.contains(e)||(t=t.delete(e))})),a=a.set("allowedScopes",t));n=n.set(r,a)})),i=i.push(n)})),i},E=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,g.List)();return e=>{let{authSelectors:n}=e;const r=n.definitionsToAuthorize()||(0,g.List)();let s=(0,g.List)();return o()(r).call(r,(e=>{let n=i()(t).call(t,(t=>t.get(e.keySeq().first())));n&&(o()(e).call(e,((t,r)=>{if("oauth2"===t.get("type")){const i=n.get(r);let a=t.get("scopes");var s;if(g.List.isList(i)&&g.Map.isMap(a))o()(s=a.keySeq()).call(s,(e=>{i.contains(e)||(a=a.delete(e))})),e=e.set(r,t.set("scopes",a))}})),s=s.push(e))})),s}},x=(0,m.P1)(y,(e=>e.get("authorized")||(0,g.Map)())),S=(e,t)=>e=>{var n;let{authSelectors:r}=e,o=r.authorized();return g.List.isList(t)?!!l()(n=t.toJS()).call(n,(e=>{var t,n;return-1===u()(t=h()(n=d()(e)).call(n,(e=>!!o.get(e)))).call(t,!1)})).length:null},_=(0,m.P1)(y,(e=>e.get("configs")))},60489:(e,t,n)=>{"use strict";n.r(t),n.d(t,{execute:()=>r});const r=(e,t)=>{let{authSelectors:n,specSelectors:r}=t;return t=>{let{path:o,method:s,operation:i,extras:a}=t,l={authorized:n.authorized()&&n.authorized().toJS(),definitions:r.securityDefinitions()&&r.securityDefinitions().toJS(),specSecurity:r.security()&&r.security().toJS()};return e({path:o,method:s,operation:i,securities:l,...a})}}},22849:(e,t,n)=>{"use strict";n.r(t),n.d(t,{authorize:()=>c,logout:()=>u});var r=n(3665),o=n.n(r),s=n(58309),i=n.n(s),a=n(86),l=n.n(a);const c=(e,t)=>n=>{e(n);if(t.getConfigs().persistAuthorization)try{const[{schema:e,value:t}]=o()(n),r="apiKey"===e.get("type"),s="cookie"===e.get("in");r&&s&&(document.cookie=`${e.get("name")}=${t}; SameSite=None; Secure`)}catch(e){console.error("Error persisting cookie based apiKey in document.cookie.",e)}},u=(e,t)=>n=>{const r=t.getConfigs(),o=t.authSelectors.authorized();try{r.persistAuthorization&&i()(n)&&l()(n).call(n,(e=>{const t=o.get(e,{}),n="apiKey"===t.getIn(["schema","type"]),r="cookie"===t.getIn(["schema","in"]);if(n&&r){const e=t.getIn(["schema","name"]);document.cookie=`${e}=; Max-Age=-99999999`}}))}catch(e){console.error("Error deleting cookie based apiKey from document.cookie.",e)}e(n)}},70714:(e,t,n)=>{"use strict";n.r(t),n.d(t,{TOGGLE_CONFIGS:()=>o,UPDATE_CONFIGS:()=>r,loaded:()=>a,toggle:()=>i,update:()=>s});const r="configs_update",o="configs_toggle";function s(e,t){return{type:r,payload:{[e]:t}}}function i(e){return{type:o,payload:e}}const a=()=>()=>{}},92256:(e,t,n)=>{"use strict";n.r(t),n.d(t,{parseYamlConfig:()=>o});var r=n(1272);const o=(e,t)=>{try{return r.ZP.load(e)}catch(e){return t&&t.errActions.newThrownErr(new Error(e)),{}}}},46709:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>c});var r=n(92256),o=n(70714),s=n(22698),i=n(69018),a=n(37743);const l={getLocalConfig:()=>(0,r.parseYamlConfig)('---\nurl: "https://petstore.swagger.io/v2/swagger.json"\ndom_id: "#swagger-ui"\nvalidatorUrl: "https://validator.swagger.io/validator"\n')};function c(){return{statePlugins:{spec:{actions:s,selectors:l},configs:{reducers:a.default,actions:o,selectors:i}}}}},37743:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(43393),o=n(70714);const s={[o.UPDATE_CONFIGS]:(e,t)=>e.merge((0,r.fromJS)(t.payload)),[o.TOGGLE_CONFIGS]:(e,t)=>{const n=t.payload,r=e.get(n);return e.set(n,!r)}}},69018:(e,t,n)=>{"use strict";n.r(t),n.d(t,{get:()=>s});var r=n(58309),o=n.n(r);const s=(e,t)=>e.getIn(o()(t)?t:[t])},22698:(e,t,n)=>{"use strict";n.r(t),n.d(t,{downloadConfig:()=>o,getConfigByUrl:()=>s});var r=n(92256);const o=e=>t=>{const{fn:{fetch:n}}=t;return n(e)},s=(e,t)=>n=>{let{specActions:o}=n;if(e)return o.downloadConfig(e).then(s,s);function s(n){n instanceof Error||n.status>=400?(o.updateLoadingStatus("failedConfig"),o.updateLoadingStatus("failedConfig"),o.updateUrl(""),console.error(n.statusText+" "+e.url),t(null)):t((0,r.parseYamlConfig)(n.text))}}},31970:(e,t,n)=>{"use strict";n.r(t),n.d(t,{setHash:()=>r});const r=e=>e?history.pushState(null,null,`#${e}`):window.location.hash=""},34980:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r=n(41599),o=n(60877),s=n(34584);function i(){return[r.default,{statePlugins:{configs:{wrapActions:{loaded:(e,t)=>function(){e(...arguments);const n=decodeURIComponent(window.location.hash);t.layoutActions.parseDeepLinkHash(n)}}}},wrapComponents:{operation:o.default,OperationTag:s.default}}]}},41599:(e,t,n)=>{"use strict";n.r(t),n.d(t,{clearScrollTo:()=>_,default:()=>j,parseDeepLinkHash:()=>E,readyToScroll:()=>x,scrollTo:()=>w,scrollToElement:()=>S,show:()=>b});var r=n(58309),o=n.n(r),s=n(24278),i=n.n(s),a=n(97606),l=n.n(a),c=n(11882),u=n.n(c),p=n(31970),h=n(45172),f=n.n(h),d=n(90242),m=n(43393),g=n.n(m);const y="layout_scroll_to",v="layout_clear_scroll",b=(e,t)=>{let{getConfigs:n,layoutSelectors:r}=t;return function(){for(var t=arguments.length,s=new Array(t),i=0;i({type:y,payload:o()(e)?e:[e]}),E=e=>t=>{let{layoutActions:n,layoutSelectors:r,getConfigs:o}=t;if(o().deepLinking&&e){var s;let t=i()(e).call(e,1);"!"===t[0]&&(t=i()(t).call(t,1)),"/"===t[0]&&(t=i()(t).call(t,1));const o=l()(s=t.split("/")).call(s,(e=>e||"")),a=r.isShownKeyFromUrlHashArray(o),[c,p="",h=""]=a;if("operations"===c){const e=r.isShownKeyFromUrlHashArray([p]);u()(p).call(p,"_")>-1&&(console.warn("Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead."),n.show(l()(e).call(e,(e=>e.replace(/_/g," "))),!0)),n.show(e,!0)}(u()(p).call(p,"_")>-1||u()(h).call(h,"_")>-1)&&(console.warn("Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead."),n.show(l()(a).call(a,(e=>e.replace(/_/g," "))),!0)),n.show(a,!0),n.scrollTo(a)}},x=(e,t)=>n=>{const r=n.layoutSelectors.getScrollToKey();g().is(r,(0,m.fromJS)(e))&&(n.layoutActions.scrollToElement(t),n.layoutActions.clearScrollTo())},S=(e,t)=>n=>{try{t=t||n.fn.getScrollParent(e),f().createScroller(t).to(e)}catch(e){console.error(e)}},_=()=>({type:v});const j={fn:{getScrollParent:function(e,t){const n=document.documentElement;let r=getComputedStyle(e);const o="absolute"===r.position,s=t?/(auto|scroll|hidden)/:/(auto|scroll)/;if("fixed"===r.position)return n;for(let t=e;t=t.parentElement;)if(r=getComputedStyle(t),(!o||"static"!==r.position)&&s.test(r.overflow+r.overflowY+r.overflowX))return t;return n}},statePlugins:{layout:{actions:{scrollToElement:S,scrollTo:w,clearScrollTo:_,readyToScroll:x,parseDeepLinkHash:E},selectors:{getScrollToKey:e=>e.get("scrollToKey"),isShownKeyFromUrlHashArray(e,t){const[n,r]=t;return r?["operations",n,r]:n?["operations-tag",n]:[]},urlHashArrayFromIsShownKey(e,t){let[n,r,o]=t;return"operations"==n?[r,o]:"operations-tag"==n?[r]:[]}},reducers:{[y]:(e,t)=>e.set("scrollToKey",g().fromJS(t.payload)),[v]:e=>e.delete("scrollToKey")},wrapActions:{show:b}}}}},34584:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r=n(61125),o=n.n(r),s=n(67294);const i=(e,t)=>class extends s.Component{constructor(){super(...arguments),o()(this,"onLoad",(e=>{const{tag:n}=this.props,r=["operations-tag",n];t.layoutActions.readyToScroll(r,e)}))}render(){return s.createElement("span",{ref:this.onLoad},s.createElement(e,this.props))}}},60877:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r=n(61125),o=n.n(r),s=n(67294);n(23930);const i=(e,t)=>class extends s.Component{constructor(){super(...arguments),o()(this,"onLoad",(e=>{const{operation:n}=this.props,{tag:r,operationId:o}=n.toObject();let{isShownKey:s}=n.toObject();s=s||["operations",r,o],t.layoutActions.readyToScroll(s,e)}))}render(){return s.createElement("span",{ref:this.onLoad},s.createElement(e,this.props))}}},48011:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>d});var r=n(76986),o=n.n(r),s=n(63460),i=n.n(s),a=n(11882),l=n.n(a),c=n(35627),u=n.n(c),p=n(20573),h=n(43393),f=n(27504);function d(e){let{fn:t}=e;return{statePlugins:{spec:{actions:{download:e=>n=>{let{errActions:r,specSelectors:s,specActions:a,getConfigs:l}=n,{fetch:c}=t;const u=l();function p(t){if(t instanceof Error||t.status>=400)return a.updateLoadingStatus("failed"),r.newThrownErr(o()(new Error((t.message||t.statusText)+" "+e),{source:"fetch"})),void(!t.status&&t instanceof Error&&function(){try{let t;if("URL"in f.Z?t=new(i())(e):(t=document.createElement("a"),t.href=e),"https:"!==t.protocol&&"https:"===f.Z.location.protocol){const e=o()(new Error(`Possible mixed-content issue? The page was loaded over https:// but a ${t.protocol}// URL was specified. Check that you are not attempting to load mixed content.`),{source:"fetch"});return void r.newThrownErr(e)}if(t.origin!==f.Z.location.origin){const e=o()(new Error(`Possible cross-origin (CORS) issue? The URL origin (${t.origin}) does not match the page (${f.Z.location.origin}). Check the server returns the correct 'Access-Control-Allow-*' headers.`),{source:"fetch"});r.newThrownErr(e)}}catch(e){return}}());a.updateLoadingStatus("success"),a.updateSpec(t.text),s.url()!==e&&a.updateUrl(e)}e=e||s.url(),a.updateLoadingStatus("loading"),r.clear({source:"fetch"}),c({url:e,loadSpec:!0,requestInterceptor:u.requestInterceptor||(e=>e),responseInterceptor:u.responseInterceptor||(e=>e),credentials:"same-origin",headers:{Accept:"application/json,*/*"}}).then(p,p)},updateLoadingStatus:e=>{let t=[null,"loading","failed","success","failedConfig"];return-1===l()(t).call(t,e)&&console.error(`Error: ${e} is not one of ${u()(t)}`),{type:"spec_update_loading_status",payload:e}}},reducers:{spec_update_loading_status:(e,t)=>"string"==typeof t.payload?e.set("loadingStatus",t.payload):e},selectors:{loadingStatus:(0,p.P1)((e=>e||(0,h.Map)()),(e=>e.get("loadingStatus")||null))}}}}}},34966:(e,t,n)=>{"use strict";n.r(t),n.d(t,{CLEAR:()=>c,CLEAR_BY:()=>u,NEW_AUTH_ERR:()=>l,NEW_SPEC_ERR:()=>i,NEW_SPEC_ERR_BATCH:()=>a,NEW_THROWN_ERR:()=>o,NEW_THROWN_ERR_BATCH:()=>s,clear:()=>g,clearBy:()=>y,newAuthErr:()=>m,newSpecErr:()=>f,newSpecErrBatch:()=>d,newThrownErr:()=>p,newThrownErrBatch:()=>h});var r=n(7710);const o="err_new_thrown_err",s="err_new_thrown_err_batch",i="err_new_spec_err",a="err_new_spec_err_batch",l="err_new_auth_err",c="err_clear",u="err_clear_by";function p(e){return{type:o,payload:(0,r.serializeError)(e)}}function h(e){return{type:s,payload:e}}function f(e){return{type:i,payload:e}}function d(e){return{type:a,payload:e}}function m(e){return{type:l,payload:e}}function g(){return{type:c,payload:arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}}}function y(){return{type:u,payload:arguments.length>0&&void 0!==arguments[0]?arguments[0]:()=>!0}}},56982:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var r=n(14418),o=n.n(r),s=n(97606),i=n.n(s),a=n(54061),l=n.n(a);const c=[n(2392),n(21835)];function u(e){var t;let n={jsSpec:{}},r=l()(c,((e,t)=>{try{let r=t.transform(e,n);return o()(r).call(r,(e=>!!e))}catch(t){return console.error("Transformer error:",t),e}}),e);return i()(t=o()(r).call(r,(e=>!!e))).call(t,(e=>(!e.get("line")&&e.get("path"),e)))}},2392:(e,t,n)=>{"use strict";n.r(t),n.d(t,{transform:()=>p});var r=n(97606),o=n.n(r),s=n(11882),i=n.n(s),a=n(24278),l=n.n(a),c=n(24282),u=n.n(c);function p(e){return o()(e).call(e,(e=>{var t;let n="is not of a type(s)",r=i()(t=e.get("message")).call(t,n);if(r>-1){var o,s;let t=l()(o=e.get("message")).call(o,r+19).split(",");return e.set("message",l()(s=e.get("message")).call(s,0,r)+function(e){return u()(e).call(e,((e,t,n,r)=>n===r.length-1&&r.length>1?e+"or "+t:r[n+1]&&r.length>2?e+t+", ":r[n+1]?e+t+" ":e+t),"should be a")}(t))}return e}))}},21835:(e,t,n)=>{"use strict";n.r(t),n.d(t,{transform:()=>r});n(97606),n(11882),n(27361),n(43393);function r(e,t){let{jsSpec:n}=t;return e}},77793:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r=n(93527),o=n(34966),s=n(87667);function i(e){return{statePlugins:{err:{reducers:(0,r.default)(e),actions:o,selectors:s}}}}},93527:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>y});var r=n(76986),o=n.n(r),s=n(97606),i=n.n(s),a=n(39022),l=n.n(a),c=n(14418),u=n.n(c),p=n(2250),h=n.n(p),f=n(34966),d=n(43393),m=n(56982);let g={line:0,level:"error",message:"Unknown error"};function y(){return{[f.NEW_THROWN_ERR]:(e,t)=>{let{payload:n}=t,r=o()(g,n,{type:"thrown"});return e.update("errors",(e=>(e||(0,d.List)()).push((0,d.fromJS)(r)))).update("errors",(e=>(0,m.default)(e)))},[f.NEW_THROWN_ERR_BATCH]:(e,t)=>{let{payload:n}=t;return n=i()(n).call(n,(e=>(0,d.fromJS)(o()(g,e,{type:"thrown"})))),e.update("errors",(e=>{var t;return l()(t=e||(0,d.List)()).call(t,(0,d.fromJS)(n))})).update("errors",(e=>(0,m.default)(e)))},[f.NEW_SPEC_ERR]:(e,t)=>{let{payload:n}=t,r=(0,d.fromJS)(n);return r=r.set("type","spec"),e.update("errors",(e=>(e||(0,d.List)()).push((0,d.fromJS)(r)).sortBy((e=>e.get("line"))))).update("errors",(e=>(0,m.default)(e)))},[f.NEW_SPEC_ERR_BATCH]:(e,t)=>{let{payload:n}=t;return n=i()(n).call(n,(e=>(0,d.fromJS)(o()(g,e,{type:"spec"})))),e.update("errors",(e=>{var t;return l()(t=e||(0,d.List)()).call(t,(0,d.fromJS)(n))})).update("errors",(e=>(0,m.default)(e)))},[f.NEW_AUTH_ERR]:(e,t)=>{let{payload:n}=t,r=(0,d.fromJS)(o()({},n));return r=r.set("type","auth"),e.update("errors",(e=>(e||(0,d.List)()).push((0,d.fromJS)(r)))).update("errors",(e=>(0,m.default)(e)))},[f.CLEAR]:(e,t)=>{var n;let{payload:r}=t;if(!r||!e.get("errors"))return e;let o=u()(n=e.get("errors")).call(n,(e=>{var t;return h()(t=e.keySeq()).call(t,(t=>{const n=e.get(t),o=r[t];return!o||n!==o}))}));return e.merge({errors:o})},[f.CLEAR_BY]:(e,t)=>{var n;let{payload:r}=t;if(!r||"function"!=typeof r)return e;let o=u()(n=e.get("errors")).call(n,(e=>r(e)));return e.merge({errors:o})}}}},87667:(e,t,n)=>{"use strict";n.r(t),n.d(t,{allErrors:()=>s,lastError:()=>i});var r=n(43393),o=n(20573);const s=(0,o.P1)((e=>e),(e=>e.get("errors",(0,r.List)()))),i=(0,o.P1)(s,(e=>e.last()))},49978:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(4309);function o(){return{fn:{opsFilter:r.default}}}},4309:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(14418),o=n.n(r),s=n(11882),i=n.n(s);function a(e,t){return o()(e).call(e,((e,n)=>-1!==i()(n).call(n,t)))}},47349:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r=n(67294),o=n(94184),s=n.n(o),i=n(12603);const a=e=>{let{expanded:t,children:n,onChange:o}=e;const a=(0,i.useComponent)("ChevronRightIcon"),l=(0,r.useCallback)((e=>{o(e,!t)}),[t,o]);return r.createElement("button",{type:"button",className:"json-schema-2020-12-accordion",onClick:l},r.createElement("div",{className:"json-schema-2020-12-accordion__children"},n),r.createElement("span",{className:s()("json-schema-2020-12-accordion__icon",{"json-schema-2020-12-accordion__icon--expanded":t,"json-schema-2020-12-accordion__icon--collapsed":!t})},r.createElement(a,null)))};a.defaultProps={expanded:!1};const l=a},36867:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);const o=e=>{let{expanded:t,onClick:n}=e;const o=(0,r.useCallback)((e=>{n(e,!t)}),[t,n]);return r.createElement("button",{type:"button",className:"json-schema-2020-12-expand-deep-button",onClick:o},t?"Collapse all":"Expand all")}},22675:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var r=n(97606),o=n.n(r),s=n(67294),i=n(94184),a=n.n(i),l=(n(16648),n(12603)),c=n(69006);const u=(0,s.forwardRef)(((e,t)=>{let{schema:n,name:r,dependentRequired:i,onExpand:u}=e;const p=(0,l.useFn)(),h=(0,l.useIsExpanded)(),f=(0,l.useIsExpandedDeeply)(),[d,m]=(0,s.useState)(h||f),[g,y]=(0,s.useState)(f),[v,b]=(0,l.useLevel)(),w=(0,l.useIsEmbedded)(),E=p.isExpandable(n)||i.length>0,x=(0,l.useIsCircular)(n),S=(0,l.useRenderedSchemas)(n),_=p.stringifyConstraints(n),j=(0,l.useComponent)("Accordion"),O=(0,l.useComponent)("Keyword$schema"),k=(0,l.useComponent)("Keyword$vocabulary"),A=(0,l.useComponent)("Keyword$id"),C=(0,l.useComponent)("Keyword$anchor"),P=(0,l.useComponent)("Keyword$dynamicAnchor"),N=(0,l.useComponent)("Keyword$ref"),I=(0,l.useComponent)("Keyword$dynamicRef"),T=(0,l.useComponent)("Keyword$defs"),R=(0,l.useComponent)("Keyword$comment"),M=(0,l.useComponent)("KeywordAllOf"),D=(0,l.useComponent)("KeywordAnyOf"),F=(0,l.useComponent)("KeywordOneOf"),L=(0,l.useComponent)("KeywordNot"),B=(0,l.useComponent)("KeywordIf"),$=(0,l.useComponent)("KeywordThen"),q=(0,l.useComponent)("KeywordElse"),U=(0,l.useComponent)("KeywordDependentSchemas"),z=(0,l.useComponent)("KeywordPrefixItems"),V=(0,l.useComponent)("KeywordItems"),W=(0,l.useComponent)("KeywordContains"),J=(0,l.useComponent)("KeywordProperties"),K=(0,l.useComponent)("KeywordPatternProperties"),H=(0,l.useComponent)("KeywordAdditionalProperties"),G=(0,l.useComponent)("KeywordPropertyNames"),Z=(0,l.useComponent)("KeywordUnevaluatedItems"),Y=(0,l.useComponent)("KeywordUnevaluatedProperties"),X=(0,l.useComponent)("KeywordType"),Q=(0,l.useComponent)("KeywordEnum"),ee=(0,l.useComponent)("KeywordConst"),te=(0,l.useComponent)("KeywordConstraint"),ne=(0,l.useComponent)("KeywordDependentRequired"),re=(0,l.useComponent)("KeywordContentSchema"),oe=(0,l.useComponent)("KeywordTitle"),se=(0,l.useComponent)("KeywordDescription"),ie=(0,l.useComponent)("KeywordDefault"),ae=(0,l.useComponent)("KeywordDeprecated"),le=(0,l.useComponent)("KeywordReadOnly"),ce=(0,l.useComponent)("KeywordWriteOnly"),ue=(0,l.useComponent)("ExpandDeepButton");(0,s.useEffect)((()=>{y(f)}),[f]),(0,s.useEffect)((()=>{y(g)}),[g]);const pe=(0,s.useCallback)(((e,t)=>{m(t),!t&&y(!1),u(e,t,!1)}),[u]),he=(0,s.useCallback)(((e,t)=>{m(t),y(t),u(e,t,!0)}),[u]);return s.createElement(c.JSONSchemaLevelContext.Provider,{value:b},s.createElement(c.JSONSchemaDeepExpansionContext.Provider,{value:g},s.createElement(c.JSONSchemaCyclesContext.Provider,{value:S},s.createElement("article",{ref:t,"data-json-schema-level":v,className:a()("json-schema-2020-12",{"json-schema-2020-12--embedded":w,"json-schema-2020-12--circular":x})},s.createElement("div",{className:"json-schema-2020-12-head"},E&&!x?s.createElement(s.Fragment,null,s.createElement(j,{expanded:d,onChange:pe},s.createElement(oe,{title:r,schema:n})),s.createElement(ue,{expanded:d,onClick:he})):s.createElement(oe,{title:r,schema:n}),s.createElement(ae,{schema:n}),s.createElement(le,{schema:n}),s.createElement(ce,{schema:n}),s.createElement(X,{schema:n,isCircular:x}),_.length>0&&o()(_).call(_,(e=>s.createElement(te,{key:`${e.scope}-${e.value}`,constraint:e})))),s.createElement("div",{className:a()("json-schema-2020-12-body",{"json-schema-2020-12-body--collapsed":!d})},d&&s.createElement(s.Fragment,null,s.createElement(se,{schema:n}),!x&&E&&s.createElement(s.Fragment,null,s.createElement(J,{schema:n}),s.createElement(K,{schema:n}),s.createElement(H,{schema:n}),s.createElement(Y,{schema:n}),s.createElement(G,{schema:n}),s.createElement(M,{schema:n}),s.createElement(D,{schema:n}),s.createElement(F,{schema:n}),s.createElement(L,{schema:n}),s.createElement(B,{schema:n}),s.createElement($,{schema:n}),s.createElement(q,{schema:n}),s.createElement(U,{schema:n}),s.createElement(z,{schema:n}),s.createElement(V,{schema:n}),s.createElement(Z,{schema:n}),s.createElement(W,{schema:n}),s.createElement(re,{schema:n})),s.createElement(Q,{schema:n}),s.createElement(ee,{schema:n}),s.createElement(ne,{schema:n,dependentRequired:i}),s.createElement(ie,{schema:n}),s.createElement(O,{schema:n}),s.createElement(k,{schema:n}),s.createElement(A,{schema:n}),s.createElement(C,{schema:n}),s.createElement(P,{schema:n}),s.createElement(N,{schema:n}),!x&&E&&s.createElement(T,{schema:n}),s.createElement(I,{schema:n}),s.createElement(R,{schema:n})))))))}));u.defaultProps={name:"",dependentRequired:[],onExpand:()=>{}};const p=u},12260:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);const o=()=>r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},r.createElement("path",{d:"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"}))},64922:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);n(16648);const o=e=>{let{schema:t}=e;return null!=t&&t.$anchor?r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$anchor"},r.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$anchor"),r.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},t.$anchor)):null}},4685:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);n(16648);const o=e=>{let{schema:t}=e;return null!=t&&t.$comment?r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$comment"},r.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$comment"),r.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},t.$comment)):null}},36418:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>d});var r=n(28222),o=n.n(r),s=n(97606),i=n.n(s),a=n(2018),l=n.n(a),c=n(67294),u=n(94184),p=n.n(u),h=(n(16648),n(12603)),f=n(69006);const d=e=>{var t;let{schema:n}=e;const r=(null==n?void 0:n.$defs)||{},s=(0,h.useIsExpandedDeeply)(),[a,u]=(0,c.useState)(s),[d,m]=(0,c.useState)(!1),g=(0,h.useComponent)("Accordion"),y=(0,h.useComponent)("ExpandDeepButton"),v=(0,h.useComponent)("JSONSchema"),b=(0,c.useCallback)((()=>{u((e=>!e))}),[]),w=(0,c.useCallback)(((e,t)=>{u(t),m(t)}),[]);return 0===o()(r).length?null:c.createElement(f.JSONSchemaDeepExpansionContext.Provider,{value:d},c.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$defs"},c.createElement(g,{expanded:a,onChange:b},c.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$defs")),c.createElement(y,{expanded:a,onClick:w}),c.createElement("strong",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"object"),c.createElement("ul",{className:p()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!a})},a&&c.createElement(c.Fragment,null,i()(t=l()(r)).call(t,(e=>{let[t,n]=e;return c.createElement("li",{key:t,className:"json-schema-2020-12-property"},c.createElement(v,{name:t,schema:n}))}))))))}},51338:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);n(16648);const o=e=>{let{schema:t}=e;return null!=t&&t.$dynamicAnchor?r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$dynamicAnchor"},r.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$dynamicAnchor"),r.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},t.$dynamicAnchor)):null}},27655:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);n(16648);const o=e=>{let{schema:t}=e;return null!=t&&t.$dynamicRef?r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$dynamicRef"},r.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$dynamicRef"),r.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},t.$dynamicRef)):null}},93460:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);n(16648);const o=e=>{let{schema:t}=e;return null!=t&&t.$id?r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$id"},r.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$id"),r.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},t.$id)):null}},72348:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);n(16648);const o=e=>{let{schema:t}=e;return null!=t&&t.$ref?r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$ref"},r.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$ref"),r.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},t.$ref)):null}},69359:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);n(16648);const o=e=>{let{schema:t}=e;return null!=t&&t.$schema?r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$schema"},r.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$schema"),r.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},t.$schema)):null}},7568:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var r=n(97606),o=n.n(r),s=n(2018),i=n.n(s),a=n(67294),l=n(94184),c=n.n(l),u=(n(16648),n(12603));const p=e=>{var t;let{schema:n}=e;const r=(0,u.useIsExpandedDeeply)(),[s,l]=(0,a.useState)(r),p=(0,u.useComponent)("Accordion"),h=(0,a.useCallback)((()=>{l((e=>!e))}),[]);return null!=n&&n.$vocabulary?"object"!=typeof n.$vocabulary?null:a.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$vocabulary"},a.createElement(p,{expanded:s,onChange:h},a.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$vocabulary")),a.createElement("strong",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"object"),a.createElement("ul",null,s&&o()(t=i()(n.$vocabulary)).call(t,(e=>{let[t,n]=e;return a.createElement("li",{key:t,className:c()("json-schema-2020-12-$vocabulary-uri",{"json-schema-2020-12-$vocabulary-uri--disabled":!n})},a.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},t))})))):null}},65253:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),o=(n(16648),n(12603));const s=e=>{let{schema:t}=e;const n=(0,o.useFn)(),{additionalProperties:s}=t,i=(0,o.useComponent)("JSONSchema");if(!n.hasKeyword(t,"additionalProperties"))return null;const a=r.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Additional properties");return r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--additionalProperties"},!0===s?r.createElement(r.Fragment,null,a,r.createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"allowed")):!1===s?r.createElement(r.Fragment,null,a,r.createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"forbidden")):r.createElement(i,{name:a,schema:s}))}},46457:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>h});var r=n(58309),o=n.n(r),s=n(97606),i=n.n(s),a=n(67294),l=n(94184),c=n.n(l),u=(n(16648),n(12603)),p=n(69006);const h=e=>{let{schema:t}=e;const n=(null==t?void 0:t.allOf)||[],r=(0,u.useFn)(),s=(0,u.useIsExpandedDeeply)(),[l,h]=(0,a.useState)(s),[f,d]=(0,a.useState)(!1),m=(0,u.useComponent)("Accordion"),g=(0,u.useComponent)("ExpandDeepButton"),y=(0,u.useComponent)("JSONSchema"),v=(0,u.useComponent)("KeywordType"),b=(0,a.useCallback)((()=>{h((e=>!e))}),[]),w=(0,a.useCallback)(((e,t)=>{h(t),d(t)}),[]);return o()(n)&&0!==n.length?a.createElement(p.JSONSchemaDeepExpansionContext.Provider,{value:f},a.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--allOf"},a.createElement(m,{expanded:l,onChange:b},a.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"All of")),a.createElement(g,{expanded:l,onClick:w}),a.createElement(v,{schema:{allOf:n}}),a.createElement("ul",{className:c()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!l})},l&&a.createElement(a.Fragment,null,i()(n).call(n,((e,t)=>a.createElement("li",{key:`#${t}`,className:"json-schema-2020-12-property"},a.createElement(y,{name:`#${t} ${r.getTitle(e)}`,schema:e})))))))):null}},8776:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>h});var r=n(58309),o=n.n(r),s=n(97606),i=n.n(s),a=n(67294),l=n(94184),c=n.n(l),u=(n(16648),n(12603)),p=n(69006);const h=e=>{let{schema:t}=e;const n=(null==t?void 0:t.anyOf)||[],r=(0,u.useFn)(),s=(0,u.useIsExpandedDeeply)(),[l,h]=(0,a.useState)(s),[f,d]=(0,a.useState)(!1),m=(0,u.useComponent)("Accordion"),g=(0,u.useComponent)("ExpandDeepButton"),y=(0,u.useComponent)("JSONSchema"),v=(0,u.useComponent)("KeywordType"),b=(0,a.useCallback)((()=>{h((e=>!e))}),[]),w=(0,a.useCallback)(((e,t)=>{h(t),d(t)}),[]);return o()(n)&&0!==n.length?a.createElement(p.JSONSchemaDeepExpansionContext.Provider,{value:f},a.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--anyOf"},a.createElement(m,{expanded:l,onChange:b},a.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Any of")),a.createElement(g,{expanded:l,onClick:w}),a.createElement(v,{schema:{anyOf:n}}),a.createElement("ul",{className:c()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!l})},l&&a.createElement(a.Fragment,null,i()(n).call(n,((e,t)=>a.createElement("li",{key:`#${t}`,className:"json-schema-2020-12-property"},a.createElement(y,{name:`#${t} ${r.getTitle(e)}`,schema:e})))))))):null}},27308:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),o=(n(16648),n(12603));const s=e=>{let{schema:t}=e;const n=(0,o.useFn)();return n.hasKeyword(t,"const")?r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--const"},r.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Const"),r.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--const"},n.stringify(t.const))):null}},69956:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294);const o=e=>{let{constraint:t}=e;return r.createElement("span",{className:`json-schema-2020-12__constraint json-schema-2020-12__constraint--${t.scope}`},t.value)},s=r.memo(o)},38993:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),o=(n(16648),n(12603));const s=e=>{let{schema:t}=e;const n=(0,o.useFn)(),s=(0,o.useComponent)("JSONSchema");if(!n.hasKeyword(t,"contains"))return null;const i=r.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Contains");return r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--contains"},r.createElement(s,{name:i,schema:t.contains}))}},3484:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),o=(n(16648),n(12603));const s=e=>{let{schema:t}=e;const n=(0,o.useFn)(),s=(0,o.useComponent)("JSONSchema");if(!n.hasKeyword(t,"contentSchema"))return null;const i=r.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Content schema");return r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--contentSchema"},r.createElement(s,{name:i,schema:t.contentSchema}))}},55148:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),o=(n(16648),n(12603));const s=e=>{let{schema:t}=e;const n=(0,o.useFn)();return n.hasKeyword(t,"default")?r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--default"},r.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Default"),r.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--const"},n.stringify(t.default))):null}},24539:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r=n(97606),o=n.n(r),s=n(67294);n(16648);const i=e=>{let{dependentRequired:t}=e;return 0===t.length?null:s.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--dependentRequired"},s.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Required when defined"),s.createElement("ul",null,o()(t).call(t,(e=>s.createElement("li",{key:e},s.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--warning"},e))))))}},26076:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>d});var r=n(28222),o=n.n(r),s=n(97606),i=n.n(s),a=n(2018),l=n.n(a),c=n(67294),u=n(94184),p=n.n(u),h=(n(16648),n(12603)),f=n(69006);const d=e=>{var t;let{schema:n}=e;const r=(null==n?void 0:n.dependentSchemas)||[],s=(0,h.useIsExpandedDeeply)(),[a,u]=(0,c.useState)(s),[d,m]=(0,c.useState)(!1),g=(0,h.useComponent)("Accordion"),y=(0,h.useComponent)("ExpandDeepButton"),v=(0,h.useComponent)("JSONSchema"),b=(0,c.useCallback)((()=>{u((e=>!e))}),[]),w=(0,c.useCallback)(((e,t)=>{u(t),m(t)}),[]);return"object"!=typeof r||0===o()(r).length?null:c.createElement(f.JSONSchemaDeepExpansionContext.Provider,{value:d},c.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--dependentSchemas"},c.createElement(g,{expanded:a,onChange:b},c.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Dependent schemas")),c.createElement(y,{expanded:a,onClick:w}),c.createElement("strong",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"object"),c.createElement("ul",{className:p()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!a})},a&&c.createElement(c.Fragment,null,i()(t=l()(r)).call(t,(e=>{let[t,n]=e;return c.createElement("li",{key:t,className:"json-schema-2020-12-property"},c.createElement(v,{name:t,schema:n}))}))))))}},26661:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);n(16648);const o=e=>{let{schema:t}=e;return!0!==(null==t?void 0:t.deprecated)?null:r.createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--warning"},"deprecated")}},79446:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);n(16648);const o=e=>{let{schema:t}=e;return null!=t&&t.description?r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--description"},r.createElement("div",{className:"json-schema-2020-12-core-keyword__value json-schema-2020-12-core-keyword__value--secondary"},t.description)):null}},67207:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),o=(n(16648),n(12603));const s=e=>{let{schema:t}=e;const n=(0,o.useFn)(),s=(0,o.useComponent)("JSONSchema");if(!n.hasKeyword(t,"else"))return null;const i=r.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Else");return r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--if"},r.createElement(s,{name:i,schema:t.else}))}},91805:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>c});var r=n(58309),o=n.n(r),s=n(97606),i=n.n(s),a=n(67294),l=(n(16648),n(12603));const c=e=>{var t;let{schema:n}=e;const r=(0,l.useFn)();return o()(null==n?void 0:n.enum)?a.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--enum"},a.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Allowed values"),a.createElement("ul",null,i()(t=n.enum).call(t,(e=>{const t=r.stringify(e);return a.createElement("li",{key:t},a.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--const"},t))})))):null}},40487:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),o=(n(16648),n(12603));const s=e=>{let{schema:t}=e;const n=(0,o.useFn)(),s=(0,o.useComponent)("JSONSchema");if(!n.hasKeyword(t,"if"))return null;const i=r.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"If");return r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--if"},r.createElement(s,{name:i,schema:t.if}))}},89206:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),o=(n(16648),n(12603));const s=e=>{let{schema:t}=e;const n=(0,o.useFn)(),s=(0,o.useComponent)("JSONSchema");if(!n.hasKeyword(t,"items"))return null;const i=r.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Items");return r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--items"},r.createElement(s,{name:i,schema:t.items}))}},65174:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),o=(n(16648),n(12603));const s=e=>{let{schema:t}=e;const n=(0,o.useFn)(),s=(0,o.useComponent)("JSONSchema");if(!n.hasKeyword(t,"not"))return null;const i=r.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Not");return r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--not"},r.createElement(s,{name:i,schema:t.not}))}},13834:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>h});var r=n(58309),o=n.n(r),s=n(97606),i=n.n(s),a=n(67294),l=n(94184),c=n.n(l),u=(n(16648),n(12603)),p=n(69006);const h=e=>{let{schema:t}=e;const n=(null==t?void 0:t.oneOf)||[],r=(0,u.useFn)(),s=(0,u.useIsExpandedDeeply)(),[l,h]=(0,a.useState)(s),[f,d]=(0,a.useState)(!1),m=(0,u.useComponent)("Accordion"),g=(0,u.useComponent)("ExpandDeepButton"),y=(0,u.useComponent)("JSONSchema"),v=(0,u.useComponent)("KeywordType"),b=(0,a.useCallback)((()=>{h((e=>!e))}),[]),w=(0,a.useCallback)(((e,t)=>{h(t),d(t)}),[]);return o()(n)&&0!==n.length?a.createElement(p.JSONSchemaDeepExpansionContext.Provider,{value:f},a.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--oneOf"},a.createElement(m,{expanded:l,onChange:b},a.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"One of")),a.createElement(g,{expanded:l,onClick:w}),a.createElement(v,{schema:{oneOf:n}}),a.createElement("ul",{className:c()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!l})},l&&a.createElement(a.Fragment,null,i()(n).call(n,((e,t)=>a.createElement("li",{key:`#${t}`,className:"json-schema-2020-12-property"},a.createElement(y,{name:`#${t} ${r.getTitle(e)}`,schema:e})))))))):null}},36746:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var r=n(28222),o=n.n(r),s=n(97606),i=n.n(s),a=n(2018),l=n.n(a),c=n(67294),u=(n(16648),n(12603));const p=e=>{var t;let{schema:n}=e;const r=(null==n?void 0:n.patternProperties)||{},s=(0,u.useComponent)("JSONSchema");return 0===o()(r).length?null:c.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--patternProperties"},c.createElement("ul",null,i()(t=l()(r)).call(t,(e=>{let[t,n]=e;return c.createElement("li",{key:t,className:"json-schema-2020-12-property"},c.createElement(s,{name:t,schema:n}))}))))}},93971:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>h});var r=n(58309),o=n.n(r),s=n(97606),i=n.n(s),a=n(67294),l=n(94184),c=n.n(l),u=(n(16648),n(12603)),p=n(69006);const h=e=>{let{schema:t}=e;const n=(null==t?void 0:t.prefixItems)||[],r=(0,u.useFn)(),s=(0,u.useIsExpandedDeeply)(),[l,h]=(0,a.useState)(s),[f,d]=(0,a.useState)(!1),m=(0,u.useComponent)("Accordion"),g=(0,u.useComponent)("ExpandDeepButton"),y=(0,u.useComponent)("JSONSchema"),v=(0,u.useComponent)("KeywordType"),b=(0,a.useCallback)((()=>{h((e=>!e))}),[]),w=(0,a.useCallback)(((e,t)=>{h(t),d(t)}),[]);return o()(n)&&0!==n.length?a.createElement(p.JSONSchemaDeepExpansionContext.Provider,{value:f},a.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--prefixItems"},a.createElement(m,{expanded:l,onChange:b},a.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Prefix items")),a.createElement(g,{expanded:l,onClick:w}),a.createElement(v,{schema:{prefixItems:n}}),a.createElement("ul",{className:c()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!l})},l&&a.createElement(a.Fragment,null,i()(n).call(n,((e,t)=>a.createElement("li",{key:`#${t}`,className:"json-schema-2020-12-property"},a.createElement(y,{name:`#${t} ${r.getTitle(e)}`,schema:e})))))))):null}},25472:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>y});var r=n(58309),o=n.n(r),s=n(28222),i=n.n(s),a=n(97606),l=n.n(a),c=n(2018),u=n.n(c),p=n(58118),h=n.n(p),f=n(67294),d=n(94184),m=n.n(d),g=(n(16648),n(12603));const y=e=>{var t;let{schema:n}=e;const r=(0,g.useFn)(),s=(null==n?void 0:n.properties)||{},a=o()(null==n?void 0:n.required)?n.required:[],c=(0,g.useComponent)("JSONSchema");return 0===i()(s).length?null:f.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--properties"},f.createElement("ul",null,l()(t=u()(s)).call(t,(e=>{let[t,o]=e;const s=h()(a).call(a,t),i=r.getDependentRequired(t,n);return f.createElement("li",{key:t,className:m()("json-schema-2020-12-property",{"json-schema-2020-12-property--required":s})},f.createElement(c,{name:t,schema:o,dependentRequired:i}))}))))}},42338:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),o=(n(16648),n(12603));const s=e=>{let{schema:t}=e;const n=(0,o.useFn)(),{propertyNames:s}=t,i=(0,o.useComponent)("JSONSchema"),a=r.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Property names");return n.hasKeyword(t,"propertyNames")?r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--propertyNames"},r.createElement(i,{name:a,schema:s})):null}},16456:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);n(16648);const o=e=>{let{schema:t}=e;return!0!==(null==t?void 0:t.readOnly)?null:r.createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted"},"read-only")}},67401:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),o=(n(16648),n(12603));const s=e=>{let{schema:t}=e;const n=(0,o.useFn)(),s=(0,o.useComponent)("JSONSchema");if(!n.hasKeyword(t,"then"))return null;const i=r.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Then");return r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--then"},r.createElement(s,{name:i,schema:t.then}))}},78137:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r=n(67294),o=(n(16648),n(12603));const s=e=>{let{title:t,schema:n}=e;const s=(0,o.useFn)();return t||s.getTitle(n)?r.createElement("div",{className:"json-schema-2020-12__title"},t||s.getTitle(n)):null};s.defaultProps={title:""};const i=s},22285:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r=n(67294),o=(n(16648),n(12603));const s=e=>{let{schema:t,isCircular:n}=e;const s=(0,o.useFn)().getType(t),i=n?" [circular]":"";return r.createElement("strong",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},`${s}${i}`)};s.defaultProps={isCircular:!1};const i=s},85828:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),o=(n(16648),n(12603));const s=e=>{let{schema:t}=e;const n=(0,o.useFn)(),{unevaluatedItems:s}=t,i=(0,o.useComponent)("JSONSchema");if(!n.hasKeyword(t,"unevaluatedItems"))return null;const a=r.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Unevaluated items");return r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--unevaluatedItems"},r.createElement(i,{name:a,schema:s}))}},6907:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),o=(n(16648),n(12603));const s=e=>{let{schema:t}=e;const n=(0,o.useFn)(),{unevaluatedProperties:s}=t,i=(0,o.useComponent)("JSONSchema");if(!n.hasKeyword(t,"unevaluatedProperties"))return null;const a=r.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Unevaluated properties");return r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--unevaluatedProperties"},r.createElement(i,{name:a,schema:s}))}},15789:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);n(16648);const o=e=>{let{schema:t}=e;return!0!==(null==t?void 0:t.writeOnly)?null:r.createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted"},"write-only")}},69006:(e,t,n)=>{"use strict";n.r(t),n.d(t,{JSONSchemaContext:()=>i,JSONSchemaCyclesContext:()=>c,JSONSchemaDeepExpansionContext:()=>l,JSONSchemaLevelContext:()=>a});var r=n(82737),o=n.n(r),s=n(67294);const i=(0,s.createContext)(null);i.displayName="JSONSchemaContext";const a=(0,s.createContext)(0);a.displayName="JSONSchemaLevelContext";const l=(0,s.createContext)(!1);l.displayName="JSONSchemaDeepExpansionContext";const c=(0,s.createContext)(new(o()))},33499:(e,t,n)=>{"use strict";n.r(t),n.d(t,{getDependentRequired:()=>F,getTitle:()=>C,getType:()=>P,hasKeyword:()=>I,isBooleanJSONSchema:()=>N,isExpandable:()=>T,stringify:()=>R,stringifyConstraints:()=>D,upperFirst:()=>A});var r=n(24278),o=n.n(r),s=n(19030),i=n.n(s),a=n(58309),l=n.n(a),c=n(97606),u=n.n(c),p=n(58118),h=n.n(p),f=n(91086),d=n.n(f),m=n(14418),g=n.n(m),y=n(35627),v=n.n(y),b=n(25110),w=n.n(b),E=n(24282),x=n.n(E),S=n(2018),_=n.n(S),j=n(82737),O=n.n(j),k=n(12603);const A=e=>"string"==typeof e?`${e.charAt(0).toUpperCase()}${o()(e).call(e,1)}`:e,C=e=>{const t=(0,k.useFn)();return null!=e&&e.title?t.upperFirst(e.title):null!=e&&e.$anchor?t.upperFirst(e.$anchor):null!=e&&e.$id?e.$id:""},P=function(e){var t,n;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new(i());const o=(0,k.useFn)();if(null==e)return"any";if(o.isBooleanJSONSchema(e))return e?"any":"never";if("object"!=typeof e)return"any";if(r.has(e))return"any";r.add(e);const{type:s,prefixItems:a,items:c}=e,p=()=>{if(l()(a)){const e=u()(a).call(a,(e=>P(e,r))),t=c?P(c,r):"any";return`array<[${e.join(", ")}], ${t}>`}if(c){return`array<${P(c,r)}>`}return"array"};if(e.not&&"any"===P(e.not))return"never";const f=l()(s)?u()(s).call(s,(e=>"array"===e?p():e)).join(" | "):"array"===s?p():h()(t=["null","boolean","object","array","number","string"]).call(t,s)?s:(()=>{var t,n;if(Object.hasOwn(e,"prefixItems")||Object.hasOwn(e,"items")||Object.hasOwn(e,"contains"))return p();if(Object.hasOwn(e,"properties")||Object.hasOwn(e,"additionalProperties")||Object.hasOwn(e,"patternProperties"))return"object";if(h()(t=["int32","int64"]).call(t,e.format))return"integer";if(h()(n=["float","double"]).call(n,e.format))return"number";if(Object.hasOwn(e,"minimum")||Object.hasOwn(e,"maximum")||Object.hasOwn(e,"exclusiveMinimum")||Object.hasOwn(e,"exclusiveMaximum")||Object.hasOwn(e,"multipleOf"))return"number | integer";if(Object.hasOwn(e,"pattern")||Object.hasOwn(e,"format")||Object.hasOwn(e,"minLength")||Object.hasOwn(e,"maxLength"))return"string";if(void 0!==e.const){if(null===e.const)return"null";if("boolean"==typeof e.const)return"boolean";if("number"==typeof e.const)return d()(e.const)?"integer":"number";if("string"==typeof e.const)return"string";if(l()(e.const))return"array";if("object"==typeof e.const)return"object"}return null})(),m=(t,n)=>{if(l()(e[t])){var o;return`(${u()(o=e[t]).call(o,(e=>P(e,r))).join(n)})`}return null},y=m("oneOf"," | "),v=m("anyOf"," | "),b=m("allOf"," & "),w=g()(n=[f,y,v,b]).call(n,Boolean).join(" | ");return r.delete(e),w||"any"},N=e=>"boolean"==typeof e,I=(e,t)=>null!==e&&"object"==typeof e&&Object.hasOwn(e,t),T=e=>{const t=(0,k.useFn)();return(null==e?void 0:e.$schema)||(null==e?void 0:e.$vocabulary)||(null==e?void 0:e.$id)||(null==e?void 0:e.$anchor)||(null==e?void 0:e.$dynamicAnchor)||(null==e?void 0:e.$ref)||(null==e?void 0:e.$dynamicRef)||(null==e?void 0:e.$defs)||(null==e?void 0:e.$comment)||(null==e?void 0:e.allOf)||(null==e?void 0:e.anyOf)||(null==e?void 0:e.oneOf)||t.hasKeyword(e,"not")||t.hasKeyword(e,"if")||t.hasKeyword(e,"then")||t.hasKeyword(e,"else")||(null==e?void 0:e.dependentSchemas)||(null==e?void 0:e.prefixItems)||t.hasKeyword(e,"items")||t.hasKeyword(e,"contains")||(null==e?void 0:e.properties)||(null==e?void 0:e.patternProperties)||t.hasKeyword(e,"additionalProperties")||t.hasKeyword(e,"propertyNames")||t.hasKeyword(e,"unevaluatedItems")||t.hasKeyword(e,"unevaluatedProperties")||(null==e?void 0:e.description)||(null==e?void 0:e.enum)||t.hasKeyword(e,"const")||t.hasKeyword(e,"contentSchema")||t.hasKeyword(e,"default")},R=e=>{var t;return null===e||h()(t=["number","bigint","boolean"]).call(t,typeof e)?String(e):l()(e)?`[${u()(e).call(e,R).join(", ")}]`:v()(e)},M=(e,t,n)=>{const r="number"==typeof t,o="number"==typeof n;return r&&o?t===n?`${t} ${e}`:`[${t}, ${n}] ${e}`:r?`>= ${t} ${e}`:o?`<= ${n} ${e}`:null},D=e=>{const t=[],n=(e=>{if("number"!=typeof(null==e?void 0:e.multipleOf))return null;if(e.multipleOf<=0)return null;if(1===e.multipleOf)return null;const{multipleOf:t}=e;if(d()(t))return`multiple of ${t}`;const n=10**t.toString().split(".")[1].length;return`multiple of ${t*n}/${n}`})(e);null!==n&&t.push({scope:"number",value:n});const r=(e=>{const t=null==e?void 0:e.minimum,n=null==e?void 0:e.maximum,r=null==e?void 0:e.exclusiveMinimum,o=null==e?void 0:e.exclusiveMaximum,s="number"==typeof t,i="number"==typeof n,a="number"==typeof r&&to;if(s&&i)return`${a?"(":"["}${a?r:t}, ${l?o:n}${l?")":"]"}`;if(s)return`${a?">":"≥"} ${a?r:t}`;if(i)return`${l?"<":"≤"} ${l?o:n}`;return null})(e);null!==r&&t.push({scope:"number",value:r}),null!=e&&e.format&&t.push({scope:"string",value:e.format});const o=M("characters",null==e?void 0:e.minLength,null==e?void 0:e.maxLength);null!==o&&t.push({scope:"string",value:o}),null!=e&&e.pattern&&t.push({scope:"string",value:`matches ${null==e?void 0:e.pattern}`}),null!=e&&e.contentMediaType&&t.push({scope:"string",value:`media type: ${e.contentMediaType}`}),null!=e&&e.contentEncoding&&t.push({scope:"string",value:`encoding: ${e.contentEncoding}`});const s=M(null!=e&&e.hasUniqueItems?"unique items":"items",null==e?void 0:e.minItems,null==e?void 0:e.maxItems);null!==s&&t.push({scope:"array",value:s});const i=M("contained items",null==e?void 0:e.minContains,null==e?void 0:e.maxContains);null!==i&&t.push({scope:"array",value:i});const a=M("properties",null==e?void 0:e.minProperties,null==e?void 0:e.maxProperties);return null!==a&&t.push({scope:"object",value:a}),t},F=(e,t)=>{var n;return null!=t&&t.dependentRequired?w()(x()(n=_()(t.dependentRequired)).call(n,((t,n)=>{let[r,o]=n;return l()(o)&&h()(o).call(o,e)?(t.add(r),t):t}),new(O()))):[]}},65077:(e,t,n)=>{"use strict";n.r(t),n.d(t,{withJSONSchemaContext:()=>H});var r=n(67294),o=n(22675),s=n(69359),i=n(7568),a=n(93460),l=n(64922),c=n(51338),u=n(72348),p=n(27655),h=n(36418),f=n(4685),d=n(46457),m=n(8776),g=n(13834),y=n(65174),v=n(40487),b=n(67401),w=n(67207),E=n(26076),x=n(93971),S=n(89206),_=n(38993),j=n(25472),O=n(36746),k=n(65253),A=n(42338),C=n(85828),P=n(6907),N=n(22285),I=n(91805),T=n(27308),R=n(69956),M=n(24539),D=n(3484),F=n(78137),L=n(79446),B=n(55148),$=n(26661),q=n(16456),U=n(15789),z=n(47349),V=n(36867),W=n(12260),J=n(69006),K=n(33499);const H=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n={components:{JSONSchema:o.default,Keyword$schema:s.default,Keyword$vocabulary:i.default,Keyword$id:a.default,Keyword$anchor:l.default,Keyword$dynamicAnchor:c.default,Keyword$ref:u.default,Keyword$dynamicRef:p.default,Keyword$defs:h.default,Keyword$comment:f.default,KeywordAllOf:d.default,KeywordAnyOf:m.default,KeywordOneOf:g.default,KeywordNot:y.default,KeywordIf:v.default,KeywordThen:b.default,KeywordElse:w.default,KeywordDependentSchemas:E.default,KeywordPrefixItems:x.default,KeywordItems:S.default,KeywordContains:_.default,KeywordProperties:j.default,KeywordPatternProperties:O.default,KeywordAdditionalProperties:k.default,KeywordPropertyNames:A.default,KeywordUnevaluatedItems:C.default,KeywordUnevaluatedProperties:P.default,KeywordType:N.default,KeywordEnum:I.default,KeywordConst:T.default,KeywordConstraint:R.default,KeywordDependentRequired:M.default,KeywordContentSchema:D.default,KeywordTitle:F.default,KeywordDescription:L.default,KeywordDefault:B.default,KeywordDeprecated:$.default,KeywordReadOnly:q.default,KeywordWriteOnly:U.default,Accordion:z.default,ExpandDeepButton:V.default,ChevronRightIcon:W.default,...t.components},config:{default$schema:"https://json-schema.org/draft/2020-12/schema",defaultExpandedLevels:0,...t.config},fn:{upperFirst:K.upperFirst,getTitle:K.getTitle,getType:K.getType,isBooleanJSONSchema:K.isBooleanJSONSchema,hasKeyword:K.hasKeyword,isExpandable:K.isExpandable,stringify:K.stringify,stringifyConstraints:K.stringifyConstraints,getDependentRequired:K.getDependentRequired,...t.fn}},H=t=>r.createElement(J.JSONSchemaContext.Provider,{value:n},r.createElement(e,t));return H.contexts={JSONSchemaContext:J.JSONSchemaContext},H.displayName=e.displayName,H}},12603:(e,t,n)=>{"use strict";n.r(t),n.d(t,{useComponent:()=>l,useConfig:()=>a,useFn:()=>c,useIsCircular:()=>m,useIsEmbedded:()=>p,useIsExpanded:()=>h,useIsExpandedDeeply:()=>f,useLevel:()=>u,useRenderedSchemas:()=>d});var r=n(82737),o=n.n(r),s=n(67294),i=n(69006);const a=()=>{const{config:e}=(0,s.useContext)(i.JSONSchemaContext);return e},l=e=>{const{components:t}=(0,s.useContext)(i.JSONSchemaContext);return t[e]||null},c=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0;const{fn:t}=(0,s.useContext)(i.JSONSchemaContext);return void 0!==e?t[e]:t},u=()=>{const e=(0,s.useContext)(i.JSONSchemaLevelContext);return[e,e+1]},p=()=>{const[e]=u();return e>0},h=()=>{const[e]=u(),{defaultExpandedLevels:t}=a();return t-e>0},f=()=>(0,s.useContext)(i.JSONSchemaDeepExpansionContext),d=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0;if(void 0===e)return(0,s.useContext)(i.JSONSchemaCyclesContext);const t=(0,s.useContext)(i.JSONSchemaCyclesContext);return new(o())([...t,e])},m=e=>d().has(e)},97139:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>Z});var r=n(22675),o=n(69359),s=n(7568),i=n(93460),a=n(64922),l=n(51338),c=n(72348),u=n(27655),p=n(36418),h=n(4685),f=n(46457),d=n(8776),m=n(13834),g=n(65174),y=n(40487),v=n(67401),b=n(67207),w=n(26076),E=n(93971),x=n(89206),S=n(38993),_=n(25472),j=n(36746),O=n(65253),k=n(42338),A=n(85828),C=n(6907),P=n(22285),N=n(91805),I=n(27308),T=n(69956),R=n(24539),M=n(3484),D=n(78137),F=n(79446),L=n(55148),B=n(26661),$=n(16456),q=n(15789),U=n(47349),z=n(36867),V=n(12260),W=n(33499),J=n(78591),K=n(69006),H=n(12603),G=n(65077);const Z=()=>({components:{JSONSchema202012:r.default,JSONSchema202012Keyword$schema:o.default,JSONSchema202012Keyword$vocabulary:s.default,JSONSchema202012Keyword$id:i.default,JSONSchema202012Keyword$anchor:a.default,JSONSchema202012Keyword$dynamicAnchor:l.default,JSONSchema202012Keyword$ref:c.default,JSONSchema202012Keyword$dynamicRef:u.default,JSONSchema202012Keyword$defs:p.default,JSONSchema202012Keyword$comment:h.default,JSONSchema202012KeywordAllOf:f.default,JSONSchema202012KeywordAnyOf:d.default,JSONSchema202012KeywordOneOf:m.default,JSONSchema202012KeywordNot:g.default,JSONSchema202012KeywordIf:y.default,JSONSchema202012KeywordThen:v.default,JSONSchema202012KeywordElse:b.default,JSONSchema202012KeywordDependentSchemas:w.default,JSONSchema202012KeywordPrefixItems:E.default,JSONSchema202012KeywordItems:x.default,JSONSchema202012KeywordContains:S.default,JSONSchema202012KeywordProperties:_.default,JSONSchema202012KeywordPatternProperties:j.default,JSONSchema202012KeywordAdditionalProperties:O.default,JSONSchema202012KeywordPropertyNames:k.default,JSONSchema202012KeywordUnevaluatedItems:A.default,JSONSchema202012KeywordUnevaluatedProperties:C.default,JSONSchema202012KeywordType:P.default,JSONSchema202012KeywordEnum:N.default,JSONSchema202012KeywordConst:I.default,JSONSchema202012KeywordConstraint:T.default,JSONSchema202012KeywordDependentRequired:R.default,JSONSchema202012KeywordContentSchema:M.default,JSONSchema202012KeywordTitle:D.default,JSONSchema202012KeywordDescription:F.default,JSONSchema202012KeywordDefault:L.default,JSONSchema202012KeywordDeprecated:B.default,JSONSchema202012KeywordReadOnly:$.default,JSONSchema202012KeywordWriteOnly:q.default,JSONSchema202012Accordion:U.default,JSONSchema202012ExpandDeepButton:z.default,JSONSchema202012ChevronRightIcon:V.default,withJSONSchema202012Context:G.withJSONSchemaContext,JSONSchema202012DeepExpansionContext:()=>K.JSONSchemaDeepExpansionContext},fn:{upperFirst:W.upperFirst,jsonSchema202012:{isExpandable:W.isExpandable,hasKeyword:W.hasKeyword,useFn:H.useFn,useConfig:H.useConfig,useComponent:H.useComponent,useIsExpandedDeeply:H.useIsExpandedDeeply,sampleFromSchema:J.sampleFromSchema,sampleFromSchemaGeneric:J.sampleFromSchemaGeneric,sampleEncoderAPI:J.encoderAPI,sampleFormatAPI:J.formatAPI,sampleMediaTypeAPI:J.mediaTypeAPI,createXMLExample:J.createXMLExample,memoizedSampleFromSchema:J.memoizedSampleFromSchema,memoizedCreateXMLExample:J.memoizedCreateXMLExample}}})},16648:(e,t,n)=>{"use strict";n.r(t),n.d(t,{booleanSchema:()=>i,objectSchema:()=>s,schema:()=>a});var r=n(45697),o=n.n(r);const s=o().object,i=o().bool,a=o().oneOfType([s,i])},9507:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});const r=new(n(70674).default),o=(e,t)=>"function"==typeof t?r.register(e,t):null===t?r.unregister(e):r.get(e);o.getDefaults=()=>r.defaults;const s=o},22906:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const r=new(n(14215).default),o=(e,t)=>"function"==typeof t?r.register(e,t):null===t?r.unregister(e):r.get(e)},90537:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});const r=new(n(43782).default),o=(e,t)=>{if("function"==typeof t)return r.register(e,t);if(null===t)return r.unregister(e);const n=e.split(";").at(0),o=`${n.split("/").at(0)}/*`;return r.get(e)||r.get(n)||r.get(o)};o.getDefaults=()=>r.defaults;const s=o},70674:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>w});var r=n(61125),o=n.n(r),s=n(47667),i=n.n(s),a=n(28886),l=n.n(a),c=n(14215),u=n(41433),p=n(58509),h=n(44366),f=n(65037),d=n(5709),m=n(54180),g=n(91967);function y(e,t,n){!function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}(e,t),t.set(e,n)}var v=new(l());class b extends c.default{constructor(){super(...arguments),y(this,v,{writable:!0,value:{"7bit":u.default,"8bit":p.default,binary:h.default,"quoted-printable":f.default,base16:d.default,base32:m.default,base64:g.default}}),o()(this,"data",{...i()(this,v)})}get defaults(){return{...i()(this,v)}}}const w=b},43782:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>v});var r=n(61125),o=n.n(r),s=n(47667),i=n.n(s),a=n(28886),l=n.n(a),c=n(14215),u=n(65378),p=n(46724),h=n(54342),f=n(92974),d=n(2672);function m(e,t,n){!function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}(e,t),t.set(e,n)}var g=new(l());class y extends c.default{constructor(){super(...arguments),m(this,g,{writable:!0,value:{...u.default,...p.default,...h.default,...f.default,...d.default}}),o()(this,"data",{...i()(this,g)})}get defaults(){return{...i()(this,g)}}}const v=y},14215:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(61125),o=n.n(r);const s=class{constructor(){o()(this,"data",{})}register(e,t){this.data[e]=t}unregister(e){void 0===e?this.data={}:delete this.data[e]}get(e){return this.data[e]}}},84539:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ALL_TYPES:()=>o,SCALAR_TYPES:()=>r});const r=["number","integer","string","boolean","null"],o=["array","object",...r]},13783:(e,t,n)=>{"use strict";n.r(t),n.d(t,{extractExample:()=>a,hasExample:()=>i});var r=n(58309),o=n.n(r),s=n(23084);const i=e=>{if(!(0,s.isJSONSchemaObject)(e))return!1;const{examples:t,example:n,default:r}=e;return!!(o()(t)&&t.length>=1)||(void 0!==r||void 0!==n)},a=e=>{if(!(0,s.isJSONSchemaObject)(e))return null;const{examples:t,example:n,default:r}=e;return o()(t)&&t.length>=1?t.at(0):void 0!==r?r:void 0!==n?n:void 0}},37078:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>v});var r=n(58309),o=n.n(r),s=n(39022),i=n.n(s),a=n(25110),l=n.n(a),c=n(82737),u=n.n(c),p=n(28222),h=n.n(p),f=n(14418),d=n.n(f),m=n(90242),g=n(23084);const y=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if((0,g.isBooleanJSONSchema)(e)&&!0===e)return!0;if((0,g.isBooleanJSONSchema)(e)&&!1===e)return!1;if((0,g.isBooleanJSONSchema)(t)&&!0===t)return!0;if((0,g.isBooleanJSONSchema)(t)&&!1===t)return!1;if(!(0,g.isJSONSchema)(e))return t;if(!(0,g.isJSONSchema)(t))return e;const r={...t,...e};if(t.type&&e.type&&o()(t.type)&&"string"==typeof t.type){var s;const n=i()(s=(0,m.AF)(t.type)).call(s,e.type);r.type=l()(new(u())(n))}if(o()(t.required)&&o()(e.required)&&(r.required=[...new(u())([...e.required,...t.required])]),t.properties&&e.properties){const o=new(u())([...h()(t.properties),...h()(e.properties)]);r.properties={};for(const s of o){const o=t.properties[s]||{},i=e.properties[s]||{};var a;if(o.readOnly&&!n.includeReadOnly||o.writeOnly&&!n.includeWriteOnly)r.required=d()(a=r.required||[]).call(a,(e=>e!==s));else r.properties[s]=y(i,o,n)}}return(0,g.isJSONSchema)(t.items)&&(0,g.isJSONSchema)(e.items)&&(r.items=y(e.items,t.items,n)),(0,g.isJSONSchema)(t.contains)&&(0,g.isJSONSchema)(e.contains)&&(r.contains=y(e.contains,t.contains,n)),(0,g.isJSONSchema)(t.contentSchema)&&(0,g.isJSONSchema)(e.contentSchema)&&(r.contentSchema=y(e.contentSchema,t.contentSchema,n)),r},v=y},23084:(e,t,n)=>{"use strict";n.r(t),n.d(t,{isBooleanJSONSchema:()=>s,isJSONSchema:()=>a,isJSONSchemaObject:()=>i});var r=n(68630),o=n.n(r);const s=e=>"boolean"==typeof e,i=e=>o()(e),a=e=>s(e)||i(e)},35202:(e,t,n)=>{"use strict";n.r(t),n.d(t,{bytes:()=>a,integer:()=>h,number:()=>p,pick:()=>c,randexp:()=>l,string:()=>u});var r=n(92282),o=n.n(r),s=n(14419),i=n.n(s);const a=e=>o()(e),l=e=>{try{return new(i())(e).gen()}catch{return"string"}},c=e=>e.at(0),u=()=>"string",p=()=>0,h=()=>0},96276:(e,t,n)=>{"use strict";n.r(t),n.d(t,{foldType:()=>_,getType:()=>O,inferType:()=>j});var r=n(58309),o=n.n(r),s=n(91086),i=n.n(s),a=n(58118),l=n.n(a),c=n(19030),u=n.n(c),p=n(28222),h=n.n(p),f=n(97606),d=n.n(f),m=n(14418),g=n.n(m),y=n(84539),v=n(23084),b=n(35202),w=n(13783);const E={array:["items","prefixItems","contains","maxContains","minContains","maxItems","minItems","uniqueItems","unevaluatedItems"],object:["properties","additionalProperties","patternProperties","propertyNames","minProperties","maxProperties","required","dependentSchemas","dependentRequired","unevaluatedProperties"],string:["pattern","format","minLength","maxLength","contentEncoding","contentMediaType","contentSchema"],integer:["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf"]};E.number=E.integer;const x="string",S=e=>void 0===e?null:null===e?"null":o()(e)?"array":i()(e)?"integer":typeof e,_=e=>{if(o()(e)&&e.length>=1){if(l()(e).call(e,"array"))return"array";if(l()(e).call(e,"object"))return"object";{const t=(0,b.pick)(e);if(l()(y.ALL_TYPES).call(y.ALL_TYPES,t))return t}}return l()(y.ALL_TYPES).call(y.ALL_TYPES,e)?e:null},j=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new(u());if(!(0,v.isJSONSchemaObject)(e))return x;if(t.has(e))return x;t.add(e);let{type:n,const:r}=e;if(n=_(n),"string"!=typeof n){const t=h()(E);e:for(let r=0;r{if(o()(e[n])){var r;const o=d()(r=e[n]).call(r,(e=>j(e,t)));return _(o)}return null},i=r("allOf"),a=r("anyOf"),l=r("oneOf"),c=e.not?j(e.not,t):null;var s;if(i||a||l||c)n=_(g()(s=[i,a,l,c]).call(s,Boolean))}if("string"!=typeof n&&(0,w.hasExample)(e)){const t=(0,w.extractExample)(e),r=S(t);n="string"==typeof r?r:n}return t.delete(e),n||x},O=e=>j(e)},99346:(e,t,n)=>{"use strict";n.r(t),n.d(t,{fromJSONBooleanSchema:()=>o,typeCast:()=>s});var r=n(23084);const o=e=>!1===e?{not:{}}:{},s=e=>(0,r.isBooleanJSONSchema)(e)?o(e):(0,r.isJSONSchemaObject)(e)?e:{}},41433:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(48764).Buffer;const o=e=>r.from(e).toString("ascii")},58509:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(48764).Buffer;const o=e=>r.from(e).toString("utf8")},5709:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(48764).Buffer;const o=e=>r.from(e).toString("hex")},54180:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(48764).Buffer;const o=e=>{const t=r.from(e).toString("utf8"),n="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";let o=0,s="",i=0,a=0;for(let e=0;e=5;)s+=n.charAt(i>>>a-5&31),a-=5;a>0&&(s+=n.charAt(i<<5-a&31),o=(8-8*t.length%5)%5);for(let e=0;e{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(48764).Buffer;const o=e=>r.from(e).toString("base64")},44366:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(48764).Buffer;const o=e=>r.from(e).toString("binary")},65037:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(24278),o=n.n(r);const s=e=>{let t="";for(let s=0;s=33&&i<=60||i>=62&&i<=126||9===i||32===i)t+=e.charAt(s);else if(13===i||10===i)t+="\r\n";else if(i>126){const r=unescape(encodeURIComponent(e.charAt(s)));for(let e=0;e{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>(new Date).toISOString()},81456:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>(new Date).toISOString().substring(0,10)},560:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>.1},64299:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>"P3D"},3981:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>"user@example.com"},51890:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>.1},69375:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>"example.com"},94518:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>"실례@example.com"},70273:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>"실례.com"},57864:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>2**30>>>0},21726:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>2**53-1},28793:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>"198.51.100.42"},98269:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>"2001:0db8:5b96:0000:0000:426f:8e17:642a"},45693:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>"path/실례.html"},13080:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>"https://실례.com/"},37856:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>"/a/b/c"},2672:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r=n(57740),o=n.n(r),s=n(35202);const i={"application/json":()=>'{"key":"value"}',"application/ld+json":()=>'{"name": "John Doe"}',"application/x-httpd-php":()=>"Hello World!

'; ?>","application/rtf":()=>o()`{\rtf1\adeflang1025\ansi\ansicpg1252\uc1`,"application/x-sh":()=>'echo "Hello World!"',"application/xhtml+xml":()=>"

content

","application/*":()=>(0,s.bytes)(25).toString("binary")}},54342:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(35202);const o={"audio/*":()=>(0,r.bytes)(25).toString("binary")}},46724:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(35202);const o={"image/*":()=>(0,r.bytes)(25).toString("binary")}},65378:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={"text/plain":()=>"string","text/css":()=>".selector { border: 1px solid red }","text/csv":()=>"value1,value2,value3","text/html":()=>"

content

","text/calendar":()=>"BEGIN:VCALENDAR","text/javascript":()=>"console.dir('Hello world!');","text/xml":()=>'John Doe',"text/*":()=>"string"}},92974:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(35202);const o={"video/*":()=>(0,r.bytes)(25).toString("binary")}},93393:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>"********"},4335:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>"^[a-z]+$"},80375:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>"1/0"},65243:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>(new Date).toISOString().substring(11)},94692:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>"path/index.html"},83829:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>"https://example.com/dictionary/{term:1}/{term}"},52978:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>"https://example.com/"},38859:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>"3fa85f64-5717-4562-b3fc-2c963f66afa6"},78591:(e,t,n)=>{"use strict";n.r(t),n.d(t,{createXMLExample:()=>r.createXMLExample,encoderAPI:()=>o.default,formatAPI:()=>s.default,mediaTypeAPI:()=>i.default,memoizedCreateXMLExample:()=>r.memoizedCreateXMLExample,memoizedSampleFromSchema:()=>r.memoizedSampleFromSchema,sampleFromSchema:()=>r.sampleFromSchema,sampleFromSchemaGeneric:()=>r.sampleFromSchemaGeneric});var r=n(94277),o=n(9507),s=n(22906),i=n(90537)},94277:(e,t,n)=>{"use strict";n.r(t),n.d(t,{createXMLExample:()=>M,memoizedCreateXMLExample:()=>L,memoizedSampleFromSchema:()=>B,sampleFromSchema:()=>D,sampleFromSchemaGeneric:()=>R});var r=n(58309),o=n.n(r),s=n(91086),i=n.n(s),a=n(86),l=n.n(a),c=n(51679),u=n.n(c),p=n(58118),h=n.n(p),f=n(39022),d=n.n(f),m=n(97606),g=n.n(m),y=n(35627),v=n.n(y),b=n(53479),w=n.n(b),E=n(41609),x=n.n(E),S=n(68630),_=n.n(S),j=n(90242),O=n(60314),k=n(63273),A=n(96276),C=n(99346),P=n(13783),N=n(35202),I=n(37078),T=n(23084);const R=function(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];"function"==typeof(null===(t=e)||void 0===t?void 0:t.toJS)&&(e=e.toJS()),e=(0,C.typeCast)(e);let a=void 0!==r||(0,P.hasExample)(e);const c=!a&&o()(e.oneOf)&&e.oneOf.length>0,p=!a&&o()(e.anyOf)&&e.anyOf.length>0;if(!a&&(c||p)){const t=(0,C.typeCast)(c?(0,N.pick)(e.oneOf):(0,N.pick)(e.anyOf));!(e=(0,I.default)(e,t,n)).xml&&t.xml&&(e.xml=t.xml),(0,P.hasExample)(e)&&(0,P.hasExample)(t)&&(a=!0)}const f={};let{xml:m,properties:y,additionalProperties:v,items:b,contains:w}=e||{},E=(0,A.getType)(e),{includeReadOnly:S,includeWriteOnly:O}=n;m=m||{};let M,{name:D,prefix:F,namespace:L}=m,B={};if(Object.hasOwn(e,"type")||(e.type=E),s&&(D=D||"notagname",M=(F?`${F}:`:"")+D,L)){f[F?`xmlns:${F}`:"xmlns"]=L}s&&(B[M]=[]);const $=(0,j.mz)(y);let q,U=0;const z=()=>i()(e.maxProperties)&&e.maxProperties>0&&U>=e.maxProperties,V=t=>!(i()(e.maxProperties)&&e.maxProperties>0)||!z()&&(!(t=>{var n;return!o()(e.required)||0===e.required.length||!h()(n=e.required).call(n,t)})(t)||e.maxProperties-U-(()=>{if(!o()(e.required)||0===e.required.length)return 0;let t=0;var n,r;return s?l()(n=e.required).call(n,(e=>t+=void 0===B[e]?0:1)):l()(r=e.required).call(r,(e=>{var n;t+=void 0===(null===(n=B[M])||void 0===n?void 0:u()(n).call(n,(t=>void 0!==t[e])))?0:1})),e.required.length-t})()>0);if(q=s?function(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;if(e&&$[t]){if($[t].xml=$[t].xml||{},$[t].xml.attribute){const e=o()($[t].enum)?(0,N.pick)($[t].enum):void 0;if((0,P.hasExample)($[t]))f[$[t].xml.name||t]=(0,P.extractExample)($[t]);else if(void 0!==e)f[$[t].xml.name||t]=e;else{const e=(0,C.typeCast)($[t]),n=(0,A.getType)(e),r=$[t].xml.name||t;f[r]=k.default[n](e)}return}$[t].xml.name=$[t].xml.name||t}else $[t]||!1===v||($[t]={xml:{name:t}});let i=R($[t],n,r,s);var a;V(t)&&(U++,o()(i)?B[M]=d()(a=B[M]).call(a,i):B[M].push(i))}:(t,r)=>{var o;if(V(t)){if(_()(null===(o=e.discriminator)||void 0===o?void 0:o.mapping)&&e.discriminator.propertyName===t&&"string"==typeof e.$$ref){for(const n in e.discriminator.mapping)if(-1!==e.$$ref.search(e.discriminator.mapping[n])){B[t]=n;break}}else B[t]=R($[t],n,r,s);U++}},a){let t;if(t=void 0!==r?r:(0,P.extractExample)(e),!s){if("number"==typeof t&&"string"===E)return`${t}`;if("string"!=typeof t||"string"===E)return t;try{return JSON.parse(t)}catch{return t}}if("array"===E){if(!o()(t)){if("string"==typeof t)return t;t=[t]}let r=[];return(0,T.isJSONSchemaObject)(b)&&(b.xml=b.xml||m||{},b.xml.name=b.xml.name||m.name,r=g()(t).call(t,(e=>R(b,n,e,s)))),(0,T.isJSONSchemaObject)(w)&&(w.xml=w.xml||m||{},w.xml.name=w.xml.name||m.name,r=[R(w,n,void 0,s),...r]),r=k.default.array(e,{sample:r}),m.wrapped?(B[M]=r,x()(f)||B[M].push({_attr:f})):B=r,B}if("object"===E){if("string"==typeof t)return t;for(const e in t){var W,J,K,H;Object.hasOwn(t,e)&&(null!==(W=$[e])&&void 0!==W&&W.readOnly&&!S||null!==(J=$[e])&&void 0!==J&&J.writeOnly&&!O||(null!==(K=$[e])&&void 0!==K&&null!==(H=K.xml)&&void 0!==H&&H.attribute?f[$[e].xml.name||e]=t[e]:q(e,t[e])))}return x()(f)||B[M].push({_attr:f}),B}return B[M]=x()(f)?t:[{_attr:f},t],B}if("array"===E){let t=[];var G,Z;if((0,T.isJSONSchemaObject)(w))if(s&&(w.xml=w.xml||e.xml||{},w.xml.name=w.xml.name||m.name),o()(w.anyOf))t.push(...g()(G=w.anyOf).call(G,(e=>R((0,I.default)(e,w,n),n,void 0,s))));else if(o()(w.oneOf)){var Y;t.push(...g()(Y=w.oneOf).call(Y,(e=>R((0,I.default)(e,w,n),n,void 0,s))))}else{if(!(!s||s&&m.wrapped))return R(w,n,void 0,s);t.push(R(w,n,void 0,s))}if((0,T.isJSONSchemaObject)(b))if(s&&(b.xml=b.xml||e.xml||{},b.xml.name=b.xml.name||m.name),o()(b.anyOf))t.push(...g()(Z=b.anyOf).call(Z,(e=>R((0,I.default)(e,b,n),n,void 0,s))));else if(o()(b.oneOf)){var X;t.push(...g()(X=b.oneOf).call(X,(e=>R((0,I.default)(e,b,n),n,void 0,s))))}else{if(!(!s||s&&m.wrapped))return R(b,n,void 0,s);t.push(R(b,n,void 0,s))}return t=k.default.array(e,{sample:t}),s&&m.wrapped?(B[M]=t,x()(f)||B[M].push({_attr:f}),B):t}if("object"===E){for(let e in $){var Q,ee,te;Object.hasOwn($,e)&&(null!==(Q=$[e])&&void 0!==Q&&Q.deprecated||null!==(ee=$[e])&&void 0!==ee&&ee.readOnly&&!S||null!==(te=$[e])&&void 0!==te&&te.writeOnly&&!O||q(e))}if(s&&f&&B[M].push({_attr:f}),z())return B;if((0,T.isBooleanJSONSchema)(v))s?B[M].push({additionalProp:"Anything can be here"}):B.additionalProp1={},U++;else if((0,T.isJSONSchemaObject)(v)){var ne,re;const t=v,r=R(t,n,void 0,s);if(s&&"string"==typeof(null==t||null===(ne=t.xml)||void 0===ne?void 0:ne.name)&&"notagname"!==(null==t||null===(re=t.xml)||void 0===re?void 0:re.name))B[M].push(r);else{const t=i()(e.minProperties)&&e.minProperties>0&&U{const r=R(e,t,n,!0);if(r)return"string"==typeof r?r:w()(r,{declaration:!0,indent:"\t"})},D=(e,t,n)=>R(e,t,n,!1),F=(e,t,n)=>[e,v()(t),v()(n)],L=(0,O.Z)(M,F),B=(0,O.Z)(D,F)},83982:(e,t,n)=>{"use strict";n.r(t),n.d(t,{applyArrayConstraints:()=>p,default:()=>h});var r=n(91086),o=n.n(r),s=n(24278),i=n.n(s),a=n(25110),l=n.n(a),c=n(82737),u=n.n(c);const p=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{minItems:n,maxItems:r,uniqueItems:s}=t,{contains:a,minContains:c,maxContains:p}=t;let h=[...e];if(null!=a&&"object"==typeof a){if(o()(c)&&c>1){const e=h.at(0);for(let t=1;t0&&(h=i()(e).call(e,0,r)),o()(n)&&n>0)for(let e=0;h.length{let{sample:n}=t;return p(n,e)}},34108:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=e=>"boolean"!=typeof e.default||e.default},63273:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var r=n(83982),o=n(46852),s=n(74522),i=n(83455),a=n(58864),l=n(34108),c=n(90853);const u={array:r.default,object:o.default,string:s.default,number:i.default,integer:a.default,boolean:l.default,null:c.default},p=new Proxy(u,{get:(e,t)=>"string"==typeof t&&Object.hasOwn(e,t)?e[t]:()=>`Unknown Type: ${t}`})},58864:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(35202),o=n(22906),s=n(57864),i=n(21726);const a=e=>{const{format:t}=e;return"string"==typeof t?(e=>{const{format:t}=e,n=(0,o.default)(t);if("function"==typeof n)return n(e);switch(t){case"int32":return(0,s.default)();case"int64":return(0,i.default)()}return(0,r.integer)()})(e):(0,r.integer)()}},90853:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>null},83455:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var r=n(91086),o=n.n(r),s=n(44081),i=n.n(s),a=n(35202),l=n(22906),c=n(51890),u=n(560);const p=e=>{const{format:t}=e;let n;return n="string"==typeof t?(e=>{const{format:t}=e,n=(0,l.default)(t);if("function"==typeof n)return n(e);switch(t){case"float":return(0,c.default)();case"double":return(0,u.default)()}return(0,a.number)()})(e):(0,a.number)(),function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{minimum:n,maximum:r,exclusiveMinimum:s,exclusiveMaximum:a}=t,{multipleOf:l}=t,c=o()(e)?1:i();let u="number"==typeof n?n:null,p="number"==typeof r?r:null,h=e;if("number"==typeof s&&(u=null!==u?Math.max(u,s+c):s+c),"number"==typeof a&&(p=null!==p?Math.min(p,a-c):a-c),h=u>p&&e||u||p||h,"number"==typeof l&&l>0){const e=h%l;h=0===e?h:h+l-e}return h}(n,e)}},46852:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=()=>{throw new Error("Not implemented")}},74522:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>L});var r=n(91086),o=n.n(r),s=n(24278),i=n.n(s),a=n(58309),l=n.n(a),c=n(35627),u=n.n(c),p=n(6557),h=n.n(p),f=n(35202),d=n(23084),m=n(3981),g=n(94518),y=n(69375),v=n(70273),b=n(28793),w=n(98269),E=n(52978),x=n(94692),S=n(13080),_=n(45693),j=n(38859),O=n(83829),k=n(37856),A=n(80375),C=n(74045),P=n(81456),N=n(65243),I=n(64299),T=n(93393),R=n(4335),M=n(22906),D=n(9507),F=n(90537);const L=function(e){let{sample:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{contentEncoding:n,contentMediaType:r,contentSchema:s}=e,{pattern:a,format:c}=e,p=(0,D.default)(n)||h();let L;if("string"==typeof a)L=(0,f.randexp)(a);else if("string"==typeof c)L=(e=>{const{format:t}=e,n=(0,M.default)(t);if("function"==typeof n)return n(e);switch(t){case"email":return(0,m.default)();case"idn-email":return(0,g.default)();case"hostname":return(0,y.default)();case"idn-hostname":return(0,v.default)();case"ipv4":return(0,b.default)();case"ipv6":return(0,w.default)();case"uri":return(0,E.default)();case"uri-reference":return(0,x.default)();case"iri":return(0,S.default)();case"iri-reference":return(0,_.default)();case"uuid":return(0,j.default)();case"uri-template":return(0,O.default)();case"json-pointer":return(0,k.default)();case"relative-json-pointer":return(0,A.default)();case"date-time":return(0,C.default)();case"date":return(0,P.default)();case"time":return(0,N.default)();case"duration":return(0,I.default)();case"password":return(0,T.default)();case"regex":return(0,R.default)()}return(0,f.string)()})(e);else if((0,d.isJSONSchema)(s)&&"string"==typeof r&&void 0!==t)L=l()(t)||"object"==typeof t?u()(t):String(t);else if("string"==typeof r){const t=(0,F.default)(r);"function"==typeof t&&(L=t(e))}else L=(0,f.string)();return p(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{maxLength:n,minLength:r}=t;let s=e;if(o()(n)&&n>0&&(s=i()(s).call(s,0,n)),o()(r)&&r>0){let e=0;for(;s.length{"use strict";n.r(t),n.d(t,{SHOW:()=>a,UPDATE_FILTER:()=>s,UPDATE_LAYOUT:()=>o,UPDATE_MODE:()=>i,changeMode:()=>p,show:()=>u,updateFilter:()=>c,updateLayout:()=>l});var r=n(90242);const o="layout_update_layout",s="layout_update_filter",i="layout_update_mode",a="layout_show";function l(e){return{type:o,payload:e}}function c(e){return{type:s,payload:e}}function u(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e=(0,r.AF)(e),{type:a,payload:{thing:e,shown:t}}}function p(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e=(0,r.AF)(e),{type:i,payload:{thing:e,mode:t}}}},26821:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(5672),o=n(25474),s=n(4400),i=n(28989);function a(){return{statePlugins:{layout:{reducers:r.default,actions:o,selectors:s},spec:{wrapSelectors:i}}}}},5672:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(39022),o=n.n(r),s=n(43393),i=n(25474);const a={[i.UPDATE_LAYOUT]:(e,t)=>e.set("layout",t.payload),[i.UPDATE_FILTER]:(e,t)=>e.set("filter",t.payload),[i.SHOW]:(e,t)=>{const n=t.payload.shown,r=(0,s.fromJS)(t.payload.thing);return e.update("shown",(0,s.fromJS)({}),(e=>e.set(r,n)))},[i.UPDATE_MODE]:(e,t)=>{var n;let r=t.payload.thing,s=t.payload.mode;return e.setIn(o()(n=["modes"]).call(n,r),(s||"")+"")}}},4400:(e,t,n)=>{"use strict";n.r(t),n.d(t,{current:()=>i,currentFilter:()=>a,isShown:()=>l,showSummary:()=>u,whatMode:()=>c});var r=n(20573),o=n(90242),s=n(43393);const i=e=>e.get("layout"),a=e=>e.get("filter"),l=(e,t,n)=>(t=(0,o.AF)(t),e.get("shown",(0,s.fromJS)({})).get((0,s.fromJS)(t),n)),c=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return t=(0,o.AF)(t),e.getIn(["modes",...t],n)},u=(0,r.P1)((e=>e),(e=>!l(e,"editor")))},28989:(e,t,n)=>{"use strict";n.r(t),n.d(t,{taggedOperations:()=>s});var r=n(24278),o=n.n(r);const s=(e,t)=>function(n){for(var r=arguments.length,s=new Array(r>1?r-1:0),i=1;i=0&&(a=o()(a).call(a,0,h)),a}},9150:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(11189),o=n.n(r);function s(e){let{configs:t}=e;const n={debug:0,info:1,log:2,warn:3,error:4},r=e=>n[e]||-1;let{logLevel:s}=t,i=r(s);function a(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o=i&&console[e](...n)}return a.warn=o()(a).call(a,null,"warn"),a.error=o()(a).call(a,null,"error"),a.info=o()(a).call(a,null,"info"),a.debug=o()(a).call(a,null,"debug"),{rootInjects:{log:a}}}},67002:(e,t,n)=>{"use strict";n.r(t),n.d(t,{CLEAR_REQUEST_BODY_VALIDATE_ERROR:()=>h,CLEAR_REQUEST_BODY_VALUE:()=>f,SET_REQUEST_BODY_VALIDATE_ERROR:()=>p,UPDATE_ACTIVE_EXAMPLES_MEMBER:()=>a,UPDATE_REQUEST_BODY_INCLUSION:()=>i,UPDATE_REQUEST_BODY_VALUE:()=>o,UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG:()=>s,UPDATE_REQUEST_CONTENT_TYPE:()=>l,UPDATE_RESPONSE_CONTENT_TYPE:()=>c,UPDATE_SELECTED_SERVER:()=>r,UPDATE_SERVER_VARIABLE_VALUE:()=>u,clearRequestBodyValidateError:()=>S,clearRequestBodyValue:()=>j,initRequestBodyValidateError:()=>_,setActiveExamplesMember:()=>v,setRequestBodyInclusion:()=>y,setRequestBodyValidateError:()=>x,setRequestBodyValue:()=>m,setRequestContentType:()=>b,setResponseContentType:()=>w,setRetainRequestBodyValueFlag:()=>g,setSelectedServer:()=>d,setServerVariableValue:()=>E});const r="oas3_set_servers",o="oas3_set_request_body_value",s="oas3_set_request_body_retain_flag",i="oas3_set_request_body_inclusion",a="oas3_set_active_examples_member",l="oas3_set_request_content_type",c="oas3_set_response_content_type",u="oas3_set_server_variable_value",p="oas3_set_request_body_validate_error",h="oas3_clear_request_body_validate_error",f="oas3_clear_request_body_value";function d(e,t){return{type:r,payload:{selectedServerUrl:e,namespace:t}}}function m(e){let{value:t,pathMethod:n}=e;return{type:o,payload:{value:t,pathMethod:n}}}const g=e=>{let{value:t,pathMethod:n}=e;return{type:s,payload:{value:t,pathMethod:n}}};function y(e){let{value:t,pathMethod:n,name:r}=e;return{type:i,payload:{value:t,pathMethod:n,name:r}}}function v(e){let{name:t,pathMethod:n,contextType:r,contextName:o}=e;return{type:a,payload:{name:t,pathMethod:n,contextType:r,contextName:o}}}function b(e){let{value:t,pathMethod:n}=e;return{type:l,payload:{value:t,pathMethod:n}}}function w(e){let{value:t,path:n,method:r}=e;return{type:c,payload:{value:t,path:n,method:r}}}function E(e){let{server:t,namespace:n,key:r,val:o}=e;return{type:u,payload:{server:t,namespace:n,key:r,val:o}}}const x=e=>{let{path:t,method:n,validationErrors:r}=e;return{type:p,payload:{path:t,method:n,validationErrors:r}}},S=e=>{let{path:t,method:n}=e;return{type:h,payload:{path:t,method:n}}},_=e=>{let{pathMethod:t}=e;return{type:h,payload:{path:t[0],method:t[1]}}},j=e=>{let{pathMethod:t}=e;return{type:f,payload:{pathMethod:t}}}},73723:(e,t,n)=>{"use strict";n.r(t),n.d(t,{definitionsToAuthorize:()=>p});var r=n(86),o=n.n(r),s=n(14418),i=n.n(s),a=n(24282),l=n.n(a),c=n(20573),u=n(43393);const p=(h=(0,c.P1)((e=>e),(e=>{let{specSelectors:t}=e;return t.securityDefinitions()}),((e,t)=>{var n;let r=(0,u.List)();return t?(o()(n=t.entrySeq()).call(n,(e=>{let[t,n]=e;const s=n.get("type");var a;if("oauth2"===s&&o()(a=n.get("flows").entrySeq()).call(a,(e=>{let[o,s]=e,a=(0,u.fromJS)({flow:o,authorizationUrl:s.get("authorizationUrl"),tokenUrl:s.get("tokenUrl"),scopes:s.get("scopes"),type:n.get("type"),description:n.get("description")});r=r.push(new u.Map({[t]:i()(a).call(a,(e=>void 0!==e))}))})),"http"!==s&&"apiKey"!==s||(r=r.push(new u.Map({[t]:n}))),"openIdConnect"===s&&n.get("openIdConnectData")){let e=n.get("openIdConnectData"),s=e.get("grant_types_supported")||["authorization_code","implicit"];o()(s).call(s,(o=>{var s;let a=e.get("scopes_supported")&&l()(s=e.get("scopes_supported")).call(s,((e,t)=>e.set(t,"")),new u.Map),c=(0,u.fromJS)({flow:o,authorizationUrl:e.get("authorization_endpoint"),tokenUrl:e.get("token_endpoint"),scopes:a,type:"oauth2",openIdConnectUrl:n.get("openIdConnectUrl")});r=r.push(new u.Map({[t]:i()(c).call(c,(e=>void 0!==e))}))}))}})),r):r})),(e,t)=>function(){for(var n=arguments.length,r=new Array(n),o=0;o{"use strict";n.r(t),n.d(t,{default:()=>l});var r=n(28222),o=n.n(r),s=n(97606),i=n.n(s),a=n(67294);n(23930);const l=e=>{let{callbacks:t,specPath:n,specSelectors:r,getComponent:s}=e;const l=r.callbacksOperations({callbacks:t,specPath:n}),c=o()(l),u=s("OperationContainer",!0);return 0===c.length?a.createElement("span",null,"No callbacks"):a.createElement("div",null,i()(c).call(c,(e=>{var t;return a.createElement("div",{key:`${e}`},a.createElement("h2",null,e),i()(t=l[e]).call(t,(t=>a.createElement(u,{key:`${e}-${t.path}-${t.method}`,op:t.operation,tag:"callbacks",method:t.method,path:t.path,specPath:t.specPath,allowTryItOut:!1}))))})))}},86775:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>h});var r=n(61125),o=n.n(r),s=n(76986),i=n.n(s),a=n(14418),l=n.n(a),c=n(97606),u=n.n(c),p=n(67294);class h extends p.Component{constructor(e,t){super(e,t),o()(this,"onChange",(e=>{let{onChange:t}=this.props,{value:n,name:r}=e.target,o=i()({},this.state.value);r?o[r]=n:o=n,this.setState({value:o},(()=>t(this.state)))}));let{name:n,schema:r}=this.props,s=this.getValue();this.state={name:n,schema:r,value:s}}getValue(){let{name:e,authorized:t}=this.props;return t&&t.getIn([e,"value"])}render(){var e;let{schema:t,getComponent:n,errSelectors:r,name:o}=this.props;const s=n("Input"),i=n("Row"),a=n("Col"),c=n("authError"),h=n("Markdown",!0),f=n("JumpToPath",!0),d=(t.get("scheme")||"").toLowerCase();let m=this.getValue(),g=l()(e=r.allErrors()).call(e,(e=>e.get("authId")===o));if("basic"===d){var y;let e=m?m.get("username"):null;return p.createElement("div",null,p.createElement("h4",null,p.createElement("code",null,o||t.get("name")),"  (http, Basic)",p.createElement(f,{path:["securityDefinitions",o]})),e&&p.createElement("h6",null,"Authorized"),p.createElement(i,null,p.createElement(h,{source:t.get("description")})),p.createElement(i,null,p.createElement("label",null,"Username:"),e?p.createElement("code",null," ",e," "):p.createElement(a,null,p.createElement(s,{type:"text",required:"required",name:"username","aria-label":"auth-basic-username",onChange:this.onChange,autoFocus:!0}))),p.createElement(i,null,p.createElement("label",null,"Password:"),e?p.createElement("code",null," ****** "):p.createElement(a,null,p.createElement(s,{autoComplete:"new-password",name:"password",type:"password","aria-label":"auth-basic-password",onChange:this.onChange}))),u()(y=g.valueSeq()).call(y,((e,t)=>p.createElement(c,{error:e,key:t}))))}var v;return"bearer"===d?p.createElement("div",null,p.createElement("h4",null,p.createElement("code",null,o||t.get("name")),"  (http, Bearer)",p.createElement(f,{path:["securityDefinitions",o]})),m&&p.createElement("h6",null,"Authorized"),p.createElement(i,null,p.createElement(h,{source:t.get("description")})),p.createElement(i,null,p.createElement("label",null,"Value:"),m?p.createElement("code",null," ****** "):p.createElement(a,null,p.createElement(s,{type:"text","aria-label":"auth-bearer-value",onChange:this.onChange,autoFocus:!0}))),u()(v=g.valueSeq()).call(v,((e,t)=>p.createElement(c,{error:e,key:t})))):p.createElement("div",null,p.createElement("em",null,p.createElement("b",null,o)," HTTP authentication: unsupported scheme ",`'${d}'`))}}},76467:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var r=n(33427),o=n(42458),s=n(15757),i=n(56617),a=n(9928),l=n(45327),c=n(86775),u=n(96796);const p={Callbacks:r.default,HttpAuth:c.default,RequestBody:o.default,Servers:i.default,ServersContainer:a.default,RequestBodyEditor:l.default,OperationServers:u.default,operationLink:s.default}},15757:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>c});var r=n(35627),o=n.n(r),s=n(97606),i=n.n(s),a=n(67294);n(23930);class l extends a.Component{render(){const{link:e,name:t,getComponent:n}=this.props,r=n("Markdown",!0);let s=e.get("operationId")||e.get("operationRef"),l=e.get("parameters")&&e.get("parameters").toJS(),c=e.get("description");return a.createElement("div",{className:"operation-link"},a.createElement("div",{className:"description"},a.createElement("b",null,a.createElement("code",null,t)),c?a.createElement(r,{source:c}):null),a.createElement("pre",null,"Operation `",s,"`",a.createElement("br",null),a.createElement("br",null),"Parameters ",function(e,t){var n;if("string"!=typeof t)return"";return i()(n=t.split("\n")).call(n,((t,n)=>n>0?Array(e+1).join(" ")+t:t)).join("\n")}(0,o()(l,null,2))||"{}",a.createElement("br",null)))}}const c=l},96796:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r=n(61125),o=n.n(r),s=n(67294);n(23930);class i extends s.Component{constructor(){super(...arguments),o()(this,"setSelectedServer",(e=>{const{path:t,method:n}=this.props;return this.forceUpdate(),this.props.setSelectedServer(e,`${t}:${n}`)})),o()(this,"setServerVariableValue",(e=>{const{path:t,method:n}=this.props;return this.forceUpdate(),this.props.setServerVariableValue({...e,namespace:`${t}:${n}`})})),o()(this,"getSelectedServer",(()=>{const{path:e,method:t}=this.props;return this.props.getSelectedServer(`${e}:${t}`)})),o()(this,"getServerVariable",((e,t)=>{const{path:n,method:r}=this.props;return this.props.getServerVariable({namespace:`${n}:${r}`,server:e},t)})),o()(this,"getEffectiveServerValue",(e=>{const{path:t,method:n}=this.props;return this.props.getEffectiveServerValue({server:e,namespace:`${t}:${n}`})}))}render(){const{operationServers:e,pathServers:t,getComponent:n}=this.props;if(!e&&!t)return null;const r=n("Servers"),o=e||t,i=e?"operation":"path";return s.createElement("div",{className:"opblock-section operation-servers"},s.createElement("div",{className:"opblock-section-header"},s.createElement("div",{className:"tab-header"},s.createElement("h4",{className:"opblock-title"},"Servers"))),s.createElement("div",{className:"opblock-description-wrapper"},s.createElement("h4",{className:"message"},"These ",i,"-level options override the global server options."),s.createElement(r,{servers:o,currentServer:this.getSelectedServer(),setSelectedServer:this.setSelectedServer,setServerVariableValue:this.setServerVariableValue,getServerVariable:this.getServerVariable,getEffectiveServerValue:this.getEffectiveServerValue})))}}},45327:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var r=n(61125),o=n.n(r),s=n(67294),i=n(94184),a=n.n(i),l=n(90242);const c=Function.prototype;class u extends s.PureComponent{constructor(e,t){super(e,t),o()(this,"applyDefaultValue",(e=>{const{onChange:t,defaultValue:n}=e||this.props;return this.setState({value:n}),t(n)})),o()(this,"onChange",(e=>{this.props.onChange((0,l.Pz)(e))})),o()(this,"onDomChange",(e=>{const t=e.target.value;this.setState({value:t},(()=>this.onChange(t)))})),this.state={value:(0,l.Pz)(e.value)||e.defaultValue},e.onChange(e.value)}UNSAFE_componentWillReceiveProps(e){this.props.value!==e.value&&e.value!==this.state.value&&this.setState({value:(0,l.Pz)(e.value)}),!e.value&&e.defaultValue&&this.state.value&&this.applyDefaultValue(e)}render(){let{getComponent:e,errors:t}=this.props,{value:n}=this.state,r=t.size>0;const o=e("TextArea");return s.createElement("div",{className:"body-param"},s.createElement(o,{className:a()("body-param__text",{invalid:r}),title:t.size?t.join(", "):"",value:n,onChange:this.onDomChange}))}}o()(u,"defaultProps",{onChange:c,userHasEditedBody:!1})},42458:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>g,getDefaultRequestBodyValue:()=>m});var r=n(97606),o=n.n(r),s=n(11882),i=n.n(s),a=n(58118),l=n.n(a),c=n(58309),u=n.n(c),p=n(67294),h=(n(23930),n(43393)),f=n(90242),d=n(2518);const m=(e,t,n,r)=>{const o=e.getIn(["content",t]),s=o.get("schema").toJS(),i=void 0!==o.get("examples"),a=o.get("example"),l=i?o.getIn(["examples",n,"value"]):a,c=r.getSampleSchema(s,t,{includeWriteOnly:!0},l);return(0,f.Pz)(c)},g=e=>{let{userHasEditedBody:t,requestBody:n,requestBodyValue:r,requestBodyInclusionSetting:s,requestBodyErrors:a,getComponent:c,getConfigs:g,specSelectors:y,fn:v,contentType:b,isExecute:w,specPath:E,onChange:x,onChangeIncludeEmpty:S,activeExamplesKey:_,updateActiveExamplesKey:j,setRetainRequestBodyValueFlag:O}=e;const k=e=>{x(e.target.files[0])},A=e=>{let t={key:e,shouldDispatchInit:!1,defaultValue:!0};return"no value"===s.get(e,"no value")&&(t.shouldDispatchInit=!0),t},C=c("Markdown",!0),P=c("modelExample"),N=c("RequestBodyEditor"),I=c("highlightCode"),T=c("ExamplesSelectValueRetainer"),R=c("Example"),M=c("ParameterIncludeEmpty"),{showCommonExtensions:D}=g(),F=n&&n.get("description")||null,L=n&&n.get("content")||new h.OrderedMap;b=b||L.keySeq().first()||"";const B=L.get(b,(0,h.OrderedMap)()),$=B.get("schema",(0,h.OrderedMap)()),q=B.get("examples",null),U=null==q?void 0:o()(q).call(q,((e,t)=>{var r;const o=null===(r=e)||void 0===r?void 0:r.get("value",null);return o&&(e=e.set("value",m(n,b,t,v),o)),e}));if(a=h.List.isList(a)?a:(0,h.List)(),!B.size)return null;const z="object"===B.getIn(["schema","type"]),V="binary"===B.getIn(["schema","format"]),W="base64"===B.getIn(["schema","format"]);if("application/octet-stream"===b||0===i()(b).call(b,"image/")||0===i()(b).call(b,"audio/")||0===i()(b).call(b,"video/")||V||W){const e=c("Input");return w?p.createElement(e,{type:"file",onChange:k}):p.createElement("i",null,"Example values are not available for ",p.createElement("code",null,b)," media types.")}if(z&&("application/x-www-form-urlencoded"===b||0===i()(b).call(b,"multipart/"))&&$.get("properties",(0,h.OrderedMap)()).size>0){var J;const e=c("JsonSchemaForm"),t=c("ParameterExt"),n=$.get("properties",(0,h.OrderedMap)());return r=h.Map.isMap(r)?r:(0,h.OrderedMap)(),p.createElement("div",{className:"table-container"},F&&p.createElement(C,{source:F}),p.createElement("table",null,p.createElement("tbody",null,h.Map.isMap(n)&&o()(J=n.entrySeq()).call(J,(n=>{var i,d;let[m,g]=n;if(g.get("readOnly"))return;let y=D?(0,f.po)(g):null;const b=l()(i=$.get("required",(0,h.List)())).call(i,m),E=g.get("type"),_=g.get("format"),j=g.get("description"),O=r.getIn([m,"value"]),k=r.getIn([m,"errors"])||a,P=s.get(m)||!1,N=g.has("default")||g.has("example")||g.hasIn(["items","example"])||g.hasIn(["items","default"]),I=g.has("enum")&&(1===g.get("enum").size||b),T=N||I;let R="";"array"!==E||T||(R=[]),("object"===E||T)&&(R=v.getSampleSchema(g,!1,{includeWriteOnly:!0})),"string"!=typeof R&&"object"===E&&(R=(0,f.Pz)(R)),"string"==typeof R&&"array"===E&&(R=JSON.parse(R));const F="string"===E&&("binary"===_||"base64"===_);return p.createElement("tr",{key:m,className:"parameters","data-property-name":m},p.createElement("td",{className:"parameters-col_name"},p.createElement("div",{className:b?"parameter__name required":"parameter__name"},m,b?p.createElement("span",null," *"):null),p.createElement("div",{className:"parameter__type"},E,_&&p.createElement("span",{className:"prop-format"},"($",_,")"),D&&y.size?o()(d=y.entrySeq()).call(d,(e=>{let[n,r]=e;return p.createElement(t,{key:`${n}-${r}`,xKey:n,xVal:r})})):null),p.createElement("div",{className:"parameter__deprecated"},g.get("deprecated")?"deprecated":null)),p.createElement("td",{className:"parameters-col_description"},p.createElement(C,{source:j}),w?p.createElement("div",null,p.createElement(e,{fn:v,dispatchInitialValue:!F,schema:g,description:m,getComponent:c,value:void 0===O?R:O,required:b,errors:k,onChange:e=>{x(e,[m])}}),b?null:p.createElement(M,{onChange:e=>S(m,e),isIncluded:P,isIncludedOptions:A(m),isDisabled:u()(O)?0!==O.length:!(0,f.O2)(O)})):null))})))))}const K=m(n,b,_,v);let H=null;return(0,d.O)(K)&&(H="json"),p.createElement("div",null,F&&p.createElement(C,{source:F}),U?p.createElement(T,{userHasEditedBody:t,examples:U,currentKey:_,currentUserInputValue:r,onSelect:e=>{j(e)},updateValue:x,defaultToFirstExample:!0,getComponent:c,setRetainRequestBodyValueFlag:O}):null,w?p.createElement("div",null,p.createElement(N,{value:r,errors:a,defaultValue:K,onChange:x,getComponent:c})):p.createElement(P,{getComponent:c,getConfigs:g,specSelectors:y,expandDepth:1,isExecute:w,schema:B.get("schema"),specPath:E.push("content",b),example:p.createElement(I,{className:"body-param__example",getConfigs:g,language:H,value:(0,f.Pz)(r)||K}),includeWriteOnly:!0}),U?p.createElement(R,{example:U.get(_),getComponent:c,getConfigs:g}):null)}},9928:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);class o extends r.Component{render(){const{specSelectors:e,oas3Selectors:t,oas3Actions:n,getComponent:o}=this.props,s=e.servers(),i=o("Servers");return s&&s.size?r.createElement("div",null,r.createElement("span",{className:"servers-title"},"Servers"),r.createElement(i,{servers:s,currentServer:t.selectedServer(),setSelectedServer:n.setSelectedServer,setServerVariableValue:n.setServerVariableValue,getServerVariable:t.serverVariableValue,getEffectiveServerValue:t.serverEffectiveValue})):null}}},56617:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var r=n(61125),o=n.n(r),s=n(51679),i=n.n(s),a=n(97606),l=n.n(a),c=n(67294),u=n(43393);n(23930);class p extends c.Component{constructor(){super(...arguments),o()(this,"onServerChange",(e=>{this.setServer(e.target.value)})),o()(this,"onServerVariableValueChange",(e=>{let{setServerVariableValue:t,currentServer:n}=this.props,r=e.target.getAttribute("data-variable"),o=e.target.value;"function"==typeof t&&t({server:n,key:r,val:o})})),o()(this,"setServer",(e=>{let{setSelectedServer:t}=this.props;t(e)}))}componentDidMount(){var e;let{servers:t,currentServer:n}=this.props;n||this.setServer(null===(e=t.first())||void 0===e?void 0:e.get("url"))}UNSAFE_componentWillReceiveProps(e){let{servers:t,setServerVariableValue:n,getServerVariable:r}=e;if(this.props.currentServer!==e.currentServer||this.props.servers!==e.servers){var o;let s=i()(t).call(t,(t=>t.get("url")===e.currentServer)),a=i()(o=this.props.servers).call(o,(e=>e.get("url")===this.props.currentServer))||(0,u.OrderedMap)();if(!s)return this.setServer(t.first().get("url"));let c=a.get("variables")||(0,u.OrderedMap)(),p=(i()(c).call(c,(e=>e.get("default")))||(0,u.OrderedMap)()).get("default"),h=s.get("variables")||(0,u.OrderedMap)(),f=(i()(h).call(h,(e=>e.get("default")))||(0,u.OrderedMap)()).get("default");l()(h).call(h,((t,o)=>{r(e.currentServer,o)&&p===f||n({server:e.currentServer,key:o,val:t.get("default")||""})}))}}render(){var e,t;let{servers:n,currentServer:r,getServerVariable:o,getEffectiveServerValue:s}=this.props,a=(i()(n).call(n,(e=>e.get("url")===r))||(0,u.OrderedMap)()).get("variables")||(0,u.OrderedMap)(),p=0!==a.size;return c.createElement("div",{className:"servers"},c.createElement("label",{htmlFor:"servers"},c.createElement("select",{onChange:this.onServerChange,value:r},l()(e=n.valueSeq()).call(e,(e=>c.createElement("option",{value:e.get("url"),key:e.get("url")},e.get("url"),e.get("description")&&` - ${e.get("description")}`))).toArray())),p?c.createElement("div",null,c.createElement("div",{className:"computed-url"},"Computed URL:",c.createElement("code",null,s(r))),c.createElement("h4",null,"Server variables"),c.createElement("table",null,c.createElement("tbody",null,l()(t=a.entrySeq()).call(t,(e=>{var t;let[n,s]=e;return c.createElement("tr",{key:n},c.createElement("td",null,n),c.createElement("td",null,s.get("enum")?c.createElement("select",{"data-variable":n,onChange:this.onServerVariableValueChange},l()(t=s.get("enum")).call(t,(e=>c.createElement("option",{selected:e===o(r,n),key:e,value:e},e)))):c.createElement("input",{type:"text",value:o(r,n)||"",onChange:this.onServerVariableValueChange,"data-variable":n})))}))))):null)}}},7779:(e,t,n)=>{"use strict";n.r(t),n.d(t,{OAS30ComponentWrapFactory:()=>c,OAS3ComponentWrapFactory:()=>l,isOAS30:()=>i,isSwagger2:()=>a});var r=n(23101),o=n.n(r),s=n(67294);function i(e){const t=e.get("openapi");return"string"==typeof t&&/^3\.0\.([0123])(?:-rc[012])?$/.test(t)}function a(e){const t=e.get("swagger");return"string"==typeof t&&"2.0"===t}function l(e){return(t,n)=>r=>{var i;return"function"==typeof(null===(i=n.specSelectors)||void 0===i?void 0:i.isOAS3)?n.specSelectors.isOAS3()?s.createElement(e,o()({},r,n,{Ori:t})):s.createElement(t,r):(console.warn("OAS3 wrapper: couldn't get spec"),null)}}function c(e){return(t,n)=>r=>{var i;return"function"==typeof(null===(i=n.specSelectors)||void 0===i?void 0:i.isOAS30)?n.specSelectors.isOAS30()?s.createElement(e,o()({},r,n,{Ori:t})):s.createElement(t,r):(console.warn("OAS30 wrapper: couldn't get spec"),null)}}},97451:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var r=n(92044),o=n(73723),s=n(91741),i=n(76467),a=n(37761),l=n(67002),c=n(5065),u=n(62109);function p(){return{components:i.default,wrapComponents:a.default,statePlugins:{spec:{wrapSelectors:r,selectors:s},auth:{wrapSelectors:o},oas3:{actions:l,reducers:u.default,selectors:c}}}}},62109:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var r=n(8712),o=n.n(r),s=n(86),i=n.n(s),a=n(24282),l=n.n(a),c=n(43393),u=n(67002);const p={[u.UPDATE_SELECTED_SERVER]:(e,t)=>{let{payload:{selectedServerUrl:n,namespace:r}}=t;const o=r?[r,"selectedServer"]:["selectedServer"];return e.setIn(o,n)},[u.UPDATE_REQUEST_BODY_VALUE]:(e,t)=>{let{payload:{value:n,pathMethod:r}}=t,[s,a]=r;if(!c.Map.isMap(n))return e.setIn(["requestData",s,a,"bodyValue"],n);let l,u=e.getIn(["requestData",s,a,"bodyValue"])||(0,c.Map)();c.Map.isMap(u)||(u=(0,c.Map)());const[...p]=o()(n).call(n);return i()(p).call(p,(e=>{let t=n.getIn([e]);u.has(e)&&c.Map.isMap(t)||(l=u.setIn([e,"value"],t))})),e.setIn(["requestData",s,a,"bodyValue"],l)},[u.UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG]:(e,t)=>{let{payload:{value:n,pathMethod:r}}=t,[o,s]=r;return e.setIn(["requestData",o,s,"retainBodyValue"],n)},[u.UPDATE_REQUEST_BODY_INCLUSION]:(e,t)=>{let{payload:{value:n,pathMethod:r,name:o}}=t,[s,i]=r;return e.setIn(["requestData",s,i,"bodyInclusion",o],n)},[u.UPDATE_ACTIVE_EXAMPLES_MEMBER]:(e,t)=>{let{payload:{name:n,pathMethod:r,contextType:o,contextName:s}}=t,[i,a]=r;return e.setIn(["examples",i,a,o,s,"activeExample"],n)},[u.UPDATE_REQUEST_CONTENT_TYPE]:(e,t)=>{let{payload:{value:n,pathMethod:r}}=t,[o,s]=r;return e.setIn(["requestData",o,s,"requestContentType"],n)},[u.UPDATE_RESPONSE_CONTENT_TYPE]:(e,t)=>{let{payload:{value:n,path:r,method:o}}=t;return e.setIn(["requestData",r,o,"responseContentType"],n)},[u.UPDATE_SERVER_VARIABLE_VALUE]:(e,t)=>{let{payload:{server:n,namespace:r,key:o,val:s}}=t;const i=r?[r,"serverVariableValues",n,o]:["serverVariableValues",n,o];return e.setIn(i,s)},[u.SET_REQUEST_BODY_VALIDATE_ERROR]:(e,t)=>{let{payload:{path:n,method:r,validationErrors:o}}=t,s=[];if(s.push("Required field is not provided"),o.missingBodyValue)return e.setIn(["requestData",n,r,"errors"],(0,c.fromJS)(s));if(o.missingRequiredKeys&&o.missingRequiredKeys.length>0){const{missingRequiredKeys:t}=o;return e.updateIn(["requestData",n,r,"bodyValue"],(0,c.fromJS)({}),(e=>l()(t).call(t,((e,t)=>e.setIn([t,"errors"],(0,c.fromJS)(s))),e)))}return console.warn("unexpected result: SET_REQUEST_BODY_VALIDATE_ERROR"),e},[u.CLEAR_REQUEST_BODY_VALIDATE_ERROR]:(e,t)=>{let{payload:{path:n,method:r}}=t;const s=e.getIn(["requestData",n,r,"bodyValue"]);if(!c.Map.isMap(s))return e.setIn(["requestData",n,r,"errors"],(0,c.fromJS)([]));const[...i]=o()(s).call(s);return i?e.updateIn(["requestData",n,r,"bodyValue"],(0,c.fromJS)({}),(e=>l()(i).call(i,((e,t)=>e.setIn([t,"errors"],(0,c.fromJS)([]))),e))):e},[u.CLEAR_REQUEST_BODY_VALUE]:(e,t)=>{let{payload:{pathMethod:n}}=t,[r,o]=n;const s=e.getIn(["requestData",r,o,"bodyValue"]);return s?c.Map.isMap(s)?e.setIn(["requestData",r,o,"bodyValue"],(0,c.Map)()):e.setIn(["requestData",r,o,"bodyValue"],""):e}}},5065:(e,t,n)=>{"use strict";n.r(t),n.d(t,{activeExamplesMember:()=>S,hasUserEditedBody:()=>w,requestBodyErrors:()=>x,requestBodyInclusionSetting:()=>E,requestBodyValue:()=>y,requestContentType:()=>_,responseContentType:()=>j,selectDefaultRequestBodyValue:()=>b,selectedServer:()=>g,serverEffectiveValue:()=>A,serverVariableValue:()=>O,serverVariables:()=>k,shouldRetainRequestBodyValue:()=>v,validOperationMethods:()=>I,validateBeforeExecute:()=>C,validateShallowRequired:()=>N});var r=n(97606),o=n.n(r),s=n(86),i=n.n(s),a=n(28222),l=n.n(a),c=n(11882),u=n.n(c),p=n(43393),h=n(20573),f=n(42458),d=n(90242);const m=e=>function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o{if(n.getSystem().specSelectors.isOAS3()){const o=e(t,...r);return"function"==typeof o?o(n):o}return null}};const g=m(((e,t)=>{const n=t?[t,"selectedServer"]:["selectedServer"];return e.getIn(n)||""})),y=m(((e,t,n)=>e.getIn(["requestData",t,n,"bodyValue"])||null)),v=m(((e,t,n)=>e.getIn(["requestData",t,n,"retainBodyValue"])||!1)),b=(e,t,n)=>e=>{const{oas3Selectors:r,specSelectors:o,fn:s}=e.getSystem();if(o.isOAS3()){const e=r.requestContentType(t,n);if(e)return(0,f.getDefaultRequestBodyValue)(o.specResolvedSubtree(["paths",t,n,"requestBody"]),e,r.activeExamplesMember(t,n,"requestBody","requestBody"),s)}return null},w=m(((e,t,n)=>e=>{const{oas3Selectors:r,specSelectors:o,fn:s}=e;let i=!1;const a=r.requestContentType(t,n);let l=r.requestBodyValue(t,n);const c=o.specResolvedSubtree(["paths",t,n,"requestBody"]);if(!c)return!1;if(p.Map.isMap(l)&&(l=(0,d.Pz)(l.mapEntries((e=>p.Map.isMap(e[1])?[e[0],e[1].get("value")]:e)).toJS())),p.List.isList(l)&&(l=(0,d.Pz)(l)),a){const e=(0,f.getDefaultRequestBodyValue)(c,a,r.activeExamplesMember(t,n,"requestBody","requestBody"),s);i=!!l&&l!==e}return i})),E=m(((e,t,n)=>e.getIn(["requestData",t,n,"bodyInclusion"])||(0,p.Map)())),x=m(((e,t,n)=>e.getIn(["requestData",t,n,"errors"])||null)),S=m(((e,t,n,r,o)=>e.getIn(["examples",t,n,r,o,"activeExample"])||null)),_=m(((e,t,n)=>e.getIn(["requestData",t,n,"requestContentType"])||null)),j=m(((e,t,n)=>e.getIn(["requestData",t,n,"responseContentType"])||null)),O=m(((e,t,n)=>{let r;if("string"!=typeof t){const{server:e,namespace:o}=t;r=o?[o,"serverVariableValues",e,n]:["serverVariableValues",e,n]}else{r=["serverVariableValues",t,n]}return e.getIn(r)||null})),k=m(((e,t)=>{let n;if("string"!=typeof t){const{server:e,namespace:r}=t;n=r?[r,"serverVariableValues",e]:["serverVariableValues",e]}else{n=["serverVariableValues",t]}return e.getIn(n)||(0,p.OrderedMap)()})),A=m(((e,t)=>{var n,r;if("string"!=typeof t){const{server:o,namespace:s}=t;r=o,n=s?e.getIn([s,"serverVariableValues",r]):e.getIn(["serverVariableValues",r])}else r=t,n=e.getIn(["serverVariableValues",r]);n=n||(0,p.OrderedMap)();let s=r;return o()(n).call(n,((e,t)=>{s=s.replace(new RegExp(`{${t}}`,"g"),e)})),s})),C=(P=(e,t)=>((e,t)=>(t=t||[],!!e.getIn(["requestData",...t,"bodyValue"])))(e,t),function(){for(var e=arguments.length,t=new Array(e),n=0;n{const n=e.getSystem().specSelectors.specJson();let r=[...t][1]||[];return!n.getIn(["paths",...r,"requestBody","required"])||P(...t)}});var P;const N=(e,t)=>{var n;let{oas3RequiredRequestBodyContentType:r,oas3RequestContentType:o,oas3RequestBodyValue:s}=t,a=[];if(!p.Map.isMap(s))return a;let c=[];return i()(n=l()(r.requestContentType)).call(n,(e=>{if(e===o){let t=r.requestContentType[e];i()(t).call(t,(e=>{u()(c).call(c,e)<0&&c.push(e)}))}})),i()(c).call(c,(e=>{s.getIn([e,"value"])||a.push(e)})),a},I=(0,h.P1)((()=>["get","put","post","delete","options","head","patch","trace"]))},91741:(e,t,n)=>{"use strict";n.r(t),n.d(t,{callbacksOperations:()=>E,isOAS3:()=>v,isOAS30:()=>y,isSwagger2:()=>g,servers:()=>w});var r=n(97606),o=n.n(r),s=n(24282),i=n.n(s),a=n(14418),l=n.n(a),c=n(58118),u=n.n(c),p=n(39022),h=n.n(p),f=n(43393),d=n(7779);const m=(0,f.Map)(),g=()=>e=>{const t=e.getSystem().specSelectors.specJson();return(0,d.isSwagger2)(t)},y=()=>e=>{const t=e.getSystem().specSelectors.specJson();return(0,d.isOAS30)(t)},v=()=>e=>e.getSystem().specSelectors.isOAS30();function b(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o{if(n.specSelectors.isOAS3()){const o=e(t,...r);return"function"==typeof o?o(n):o}return null}}}const w=b((()=>e=>e.specSelectors.specJson().get("servers",m))),E=b(((e,t)=>{let{callbacks:n,specPath:r}=t;return e=>{var t;const s=e.specSelectors.validOperationMethods();return f.Map.isMap(n)?o()(t=i()(n).call(n,((e,t,n)=>f.Map.isMap(t)?i()(t).call(t,((e,t,i)=>{var a,c;if(!f.Map.isMap(t))return e;const p=o()(a=l()(c=t.entrySeq()).call(c,(e=>{let[t]=e;return u()(s).call(s,t)}))).call(a,(e=>{let[t,o]=e;return{operation:(0,f.Map)({operation:o}),method:t,path:i,callbackName:n,specPath:h()(r).call(r,[n,i,t])}}));return h()(e).call(e,p)}),(0,f.List)()):e),(0,f.List)()).groupBy((e=>e.callbackName))).call(t,(e=>e.toArray())).toObject():{}}}))},92044:(e,t,n)=>{"use strict";n.r(t),n.d(t,{basePath:()=>d,consumes:()=>m,definitions:()=>c,hasHost:()=>u,host:()=>f,produces:()=>g,schemes:()=>y,securityDefinitions:()=>p,validOperationMethods:()=>h});var r=n(20573),o=n(33881),s=n(43393);const i=(0,s.Map)();function a(e){return(t,n)=>function(){if(n.getSystem().specSelectors.isOAS3()){const t=e(...arguments);return"function"==typeof t?t(n):t}return t(...arguments)}}const l=a((0,r.P1)((()=>null))),c=a((()=>e=>{const t=e.getSystem().specSelectors.specJson().getIn(["components","schemas"]);return s.Map.isMap(t)?t:i})),u=a((()=>e=>e.getSystem().specSelectors.specJson().hasIn(["servers",0]))),p=a((0,r.P1)(o.specJsonWithResolvedSubtrees,(e=>e.getIn(["components","securitySchemes"])||null))),h=(e,t)=>function(n){if(t.specSelectors.isOAS3())return t.oas3Selectors.validOperationMethods();for(var r=arguments.length,o=new Array(r>1?r-1:0),s=1;s{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);const o=(0,n(7779).OAS3ComponentWrapFactory)((e=>{let{Ori:t,...n}=e;const{schema:o,getComponent:s,errSelectors:i,authorized:a,onAuthChange:l,name:c}=n,u=s("HttpAuth");return"http"===o.get("type")?r.createElement(u,{key:c,schema:o,name:c,errSelectors:i,authorized:a,getComponent:s,onChange:l}):r.createElement(t,n)}))},37761:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>c});var r=n(22460),o=n(70356),s=n(69487),i=n(50058),a=n(53499),l=n(90287);const c={Markdown:r.default,AuthItem:o.default,JsonSchema_string:l.default,VersionStamp:s.default,model:a.default,onlineValidatorBadge:i.default}},90287:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);const o=(0,n(7779).OAS3ComponentWrapFactory)((e=>{let{Ori:t,...n}=e;const{schema:o,getComponent:s,errors:i,onChange:a}=n,l=o&&o.get?o.get("format"):null,c=o&&o.get?o.get("type"):null,u=s("Input");return c&&"string"===c&&l&&("binary"===l||"base64"===l)?r.createElement(u,{type:"file",className:i.length?"invalid":"",title:i.length?i:"",onChange:e=>{a(e.target.files[0])},disabled:t.isDisabled}):r.createElement(t,n)}))},22460:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Markdown:()=>h,default:()=>f});var r=n(81607),o=n.n(r),s=n(67294),i=n(94184),a=n.n(i),l=n(89927),c=n(7779),u=n(4599);const p=new l._("commonmark");p.block.ruler.enable(["table"]),p.set({linkTarget:"_blank"});const h=e=>{let{source:t,className:n="",getConfigs:r}=e;if("string"!=typeof t)return null;if(t){const{useUnsafeMarkdown:e}=r(),i=p.render(t),l=(0,u.s)(i,{useUnsafeMarkdown:e});let c;return"string"==typeof l&&(c=o()(l).call(l)),s.createElement("div",{dangerouslySetInnerHTML:{__html:c},className:a()(n,"renderedMarkdown")})}return null};h.defaultProps={getConfigs:()=>({useUnsafeMarkdown:!1})};const f=(0,c.OAS3ComponentWrapFactory)(h)},53499:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>c});var r=n(23101),o=n.n(r),s=n(67294),i=n(7779),a=n(53795);class l extends s.Component{render(){let{getConfigs:e,schema:t}=this.props,n=["model-box"],r=null;return!0===t.get("deprecated")&&(n.push("deprecated"),r=s.createElement("span",{className:"model-deprecated-warning"},"Deprecated:")),s.createElement("div",{className:n.join(" ")},r,s.createElement(a.Z,o()({},this.props,{getConfigs:e,depth:1,expandDepth:this.props.expandDepth||0})))}}const c=(0,i.OAS3ComponentWrapFactory)(l)},50058:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(7779),o=n(5623);const s=(0,r.OAS3ComponentWrapFactory)(o.Z)},69487:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);const o=(0,n(7779).OAS30ComponentWrapFactory)((e=>{const{Ori:t}=e;return r.createElement("span",null,r.createElement(t,e),r.createElement("small",{className:"version-stamp"},r.createElement("pre",{className:"version"},"OAS 3.0")))}))},92372:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(76986),o=n.n(r),s=n(25800),i=n(84380);const a=function(e){let{fn:t,getSystem:n}=e;if(t.jsonSchema202012){const e=(0,s.makeIsExpandable)(t.jsonSchema202012.isExpandable,n);o()(this.fn.jsonSchema202012,{isExpandable:e,getProperties:s.getProperties})}if("function"==typeof t.sampleFromSchema&&t.jsonSchema202012){const e=(0,i.wrapOAS31Fn)({sampleFromSchema:t.jsonSchema202012.sampleFromSchema,sampleFromSchemaGeneric:t.jsonSchema202012.sampleFromSchemaGeneric,createXMLExample:t.jsonSchema202012.createXMLExample,memoizedSampleFromSchema:t.jsonSchema202012.memoizedSampleFromSchema,memoizedCreateXMLExample:t.jsonSchema202012.memoizedCreateXMLExample},n());o()(this.fn,e)}}},89503:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),o=n(90242);const s=e=>{let{getComponent:t,specSelectors:n}=e;const s=n.selectContactNameField(),i=n.selectContactUrl(),a=n.selectContactEmailField(),l=t("Link");return r.createElement("div",{className:"info__contact"},i&&r.createElement("div",null,r.createElement(l,{href:(0,o.Nm)(i),target:"_blank"},s," - Website")),a&&r.createElement(l,{href:(0,o.Nm)(`mailto:${a}`)},i?`Send email to ${s}`:`Contact ${s}`))}},16133:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),o=n(90242);const s=e=>{let{getComponent:t,specSelectors:n}=e;const s=n.version(),i=n.url(),a=n.basePath(),l=n.host(),c=n.selectInfoSummaryField(),u=n.selectInfoDescriptionField(),p=n.selectInfoTitleField(),h=n.selectInfoTermsOfServiceUrl(),f=n.selectExternalDocsUrl(),d=n.selectExternalDocsDescriptionField(),m=n.contact(),g=n.license(),y=t("Markdown",!0),v=t("Link"),b=t("VersionStamp"),w=t("InfoUrl"),E=t("InfoBasePath"),x=t("License",!0),S=t("Contact",!0),_=t("JsonSchemaDialect",!0);return r.createElement("div",{className:"info"},r.createElement("hgroup",{className:"main"},r.createElement("h2",{className:"title"},p,s&&r.createElement(b,{version:s})),(l||a)&&r.createElement(E,{host:l,basePath:a}),i&&r.createElement(w,{getComponent:t,url:i})),c&&r.createElement("p",{className:"info__summary"},c),r.createElement("div",{className:"info__description description"},r.createElement(y,{source:u})),h&&r.createElement("div",{className:"info__tos"},r.createElement(v,{target:"_blank",href:(0,o.Nm)(h)},"Terms of service")),m.size>0&&r.createElement(S,null),g.size>0&&r.createElement(x,null),f&&r.createElement(v,{className:"info__extdocs",target:"_blank",href:(0,o.Nm)(f)},d||f),r.createElement(_,null))}},92562:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),o=n(90242);const s=e=>{let{getComponent:t,specSelectors:n}=e;const s=n.selectJsonSchemaDialectField(),i=n.selectJsonSchemaDialectDefault(),a=t("Link");return r.createElement(r.Fragment,null,s&&s===i&&r.createElement("p",{className:"info__jsonschemadialect"},"JSON Schema dialect:"," ",r.createElement(a,{target:"_blank",href:(0,o.Nm)(s)},s)),s&&s!==i&&r.createElement("div",{className:"error-wrapper"},r.createElement("div",{className:"no-margin"},r.createElement("div",{className:"errors"},r.createElement("div",{className:"errors-wrapper"},r.createElement("h4",{className:"center"},"Warning"),r.createElement("p",{className:"message"},r.createElement("strong",null,"OpenAPI.jsonSchemaDialect")," field contains a value different from the default value of"," ",r.createElement(a,{target:"_blank",href:i},i),". Values different from the default one are currently not supported. Please either omit the field or provide it with the default value."))))))}},51876:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294),o=n(90242);const s=e=>{let{getComponent:t,specSelectors:n}=e;const s=n.selectLicenseNameField(),i=n.selectLicenseUrl(),a=t("Link");return r.createElement("div",{className:"info__license"},i?r.createElement("div",{className:"info__license__url"},r.createElement(a,{target:"_blank",href:(0,o.Nm)(i)},s)):r.createElement("span",null,s))}},92718:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r=n(58118),o=n.n(r),s=n(67294);n(23930);const i=e=>"string"==typeof e&&o()(e).call(e,"#/components/schemas/")?(e=>{const t=e.replace(/~1/g,"/").replace(/~0/g,"~");try{return decodeURIComponent(t)}catch{return t}})(e.replace(/^.*#\/components\/schemas\//,"")):null,a=(0,s.forwardRef)(((e,t)=>{let{schema:n,getComponent:r,onToggle:o}=e;const a=r("JSONSchema202012"),l=i(n.get("$$ref")),c=(0,s.useCallback)(((e,t)=>{o(l,t)}),[l,o]);return s.createElement(a,{name:l,schema:n.toJS(),ref:t,onExpand:c})}));a.defaultProps={name:"",displayName:"",isRef:!1,required:!1,expandDepth:0,depth:1,includeReadOnly:!1,includeWriteOnly:!1,onToggle:()=>{}};const l=a},20263:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>h});var r=n(28222),o=n.n(r),s=n(97606),i=n.n(s),a=n(2018),l=n.n(a),c=n(67294),u=n(94184),p=n.n(u);const h=e=>{var t;let{specActions:n,specSelectors:r,layoutSelectors:s,layoutActions:a,getComponent:u,getConfigs:h}=e;const f=r.selectSchemas(),d=o()(f).length>0,m=["components","schemas"],{docExpansion:g,defaultModelsExpandDepth:y}=h(),v=y>0&&"none"!==g,b=s.isShown(m,v),w=u("Collapse"),E=u("JSONSchema202012");(0,c.useEffect)((()=>{const e=b&&y>1,t=null!=r.specResolvedSubtree(m);e&&!t&&n.requestResolvedSubtree(m)}),[b,y]);const x=(0,c.useCallback)((()=>{a.show(m,!b)}),[b]),S=(0,c.useCallback)((e=>{null!==e&&a.readyToScroll(m,e)}),[]),_=e=>t=>{null!==t&&a.readyToScroll([...m,e],t)},j=e=>(t,o)=>{if(o){const t=[...m,e];null!=r.specResolvedSubtree(t)||n.requestResolvedSubtree([...m,e])}};return!d||y<0?null:c.createElement("section",{className:p()("models",{"is-open":b}),ref:S},c.createElement("h4",null,c.createElement("button",{"aria-expanded":b,className:"models-control",onClick:x},c.createElement("span",null,"Schemas"),c.createElement("svg",{width:"20",height:"20","aria-hidden":"true",focusable:"false"},c.createElement("use",{xlinkHref:b?"#large-arrow-up":"#large-arrow-down"})))),c.createElement(w,{isOpened:b},i()(t=l()(f)).call(t,(e=>{let[t,n]=e;return c.createElement(E,{key:t,ref:_(t),schema:n,name:t,onExpand:j(t)})}))))}},33429:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);const o=e=>{let{bypass:t,isSwagger2:n,isOAS3:o,isOAS31:s,alsoShow:i,children:a}=e;return t?r.createElement("div",null,a):n&&(o||s)?r.createElement("div",{className:"version-pragma"},i,r.createElement("div",{className:"version-pragma__message version-pragma__message--ambiguous"},r.createElement("div",null,r.createElement("h3",null,"Unable to render this definition"),r.createElement("p",null,r.createElement("code",null,"swagger")," and ",r.createElement("code",null,"openapi")," fields cannot be present in the same Swagger or OpenAPI definition. Please remove one of the fields."),r.createElement("p",null,"Supported version fields are ",r.createElement("code",null,'swagger: "2.0"')," and those that match ",r.createElement("code",null,"openapi: 3.x.y")," (for example,"," ",r.createElement("code",null,"openapi: 3.1.0"),").")))):n||o||s?r.createElement("div",null,a):r.createElement("div",{className:"version-pragma"},i,r.createElement("div",{className:"version-pragma__message version-pragma__message--missing"},r.createElement("div",null,r.createElement("h3",null,"Unable to render this definition"),r.createElement("p",null,"The provided definition does not specify a valid version field."),r.createElement("p",null,"Please indicate a valid Swagger or OpenAPI version field. Supported version fields are ",r.createElement("code",null,'swagger: "2.0"')," and those that match ",r.createElement("code",null,"openapi: 3.x.y")," (for example,"," ",r.createElement("code",null,"openapi: 3.1.0"),")."))))}},39508:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r=n(28222),o=n.n(r),s=n(97606),i=n.n(s),a=n(67294);const l=e=>{let{specSelectors:t,getComponent:n}=e;const r=t.selectWebhooksOperations(),s=o()(r),l=n("OperationContainer",!0);return 0===s.length?null:a.createElement("div",{className:"webhooks"},a.createElement("h2",null,"Webhooks"),i()(s).call(s,(e=>{var t;return a.createElement("div",{key:`${e}-webhook`},i()(t=r[e]).call(t,(t=>a.createElement(l,{key:`${e}-${t.method}-webhook`,op:t.operation,tag:"webhooks",method:t.method,path:e,specPath:t.specPath,allowTryItOut:!1}))))})))}},84380:(e,t,n)=>{"use strict";n.r(t),n.d(t,{createOnlyOAS31ComponentWrapper:()=>g,createOnlyOAS31Selector:()=>f,createOnlyOAS31SelectorWrapper:()=>d,createSystemSelector:()=>m,isOAS31:()=>h,wrapOAS31Fn:()=>y});var r=n(23101),o=n.n(r),s=n(82865),i=n.n(s),a=n(97606),l=n.n(a),c=n(2018),u=n.n(c),p=n(67294);const h=e=>{const t=e.get("openapi");return"string"==typeof t&&/^3\.1\.(?:[1-9]\d*|0)$/.test(t)},f=e=>function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o{if(n.getSystem().specSelectors.isOAS31()){const o=e(t,...r);return"function"==typeof o?o(n):o}return null}},d=e=>(t,n)=>function(r){for(var o=arguments.length,s=new Array(o>1?o-1:0),i=1;ifunction(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o{const o=e(t,n,...r);return"function"==typeof o?o(n):o}},g=e=>(t,n)=>r=>n.specSelectors.isOAS31()?p.createElement(e,o()({},r,{originalComponent:t,getSystem:n.getSystem})):p.createElement(t,r),y=(e,t)=>{var n;const{fn:r,specSelectors:o}=t;return i()(l()(n=u()(e)).call(n,(e=>{let[t,n]=e;const s=r[t];return[t,function(){return o.isOAS31()?n(...arguments):"function"==typeof s?s(...arguments):void 0}]})))}},29806:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>P});var r=n(39508),o=n(51876),s=n(89503),i=n(16133),a=n(92562),l=n(33429),c=n(92718),u=n(20263),p=n(6608),h=n(77423),f=n(284),d=n(17042),m=n(22914),g=n(41434),y=n(1122),v=n(84380),b=n(9305),w=n(32884),E=n(64280),x=n(59450),S=n(36617),_=n(19525),j=n(25324),O=n(80809),k=n(14951),A=n(77536),C=n(92372);const P=e=>{let{fn:t}=e;const n=t.createSystemSelector||v.createSystemSelector,P=t.createOnlyOAS31Selector||v.createOnlyOAS31Selector;return{afterLoad:C.default,fn:{isOAS31:v.isOAS31,createSystemSelector:v.createSystemSelector,createOnlyOAS31Selector:v.createOnlyOAS31Selector},components:{Webhooks:r.default,JsonSchemaDialect:a.default,OAS31Info:i.default,OAS31License:o.default,OAS31Contact:s.default,OAS31VersionPragmaFilter:l.default,OAS31Model:c.default,OAS31Models:u.default,JSONSchema202012KeywordExample:x.default,JSONSchema202012KeywordXml:S.default,JSONSchema202012KeywordDiscriminator:_.default,JSONSchema202012KeywordExternalDocs:j.default},wrapComponents:{InfoContainer:f.default,License:p.default,Contact:h.default,VersionPragmaFilter:g.default,VersionStamp:y.default,Model:d.default,Models:m.default,JSONSchema202012KeywordDescription:O.default,JSONSchema202012KeywordDefault:k.default,JSONSchema202012KeywordProperties:A.default},statePlugins:{spec:{selectors:{isOAS31:n(b.isOAS31),license:b.license,selectLicenseNameField:b.selectLicenseNameField,selectLicenseUrlField:b.selectLicenseUrlField,selectLicenseIdentifierField:P(b.selectLicenseIdentifierField),selectLicenseUrl:n(b.selectLicenseUrl),contact:b.contact,selectContactNameField:b.selectContactNameField,selectContactEmailField:b.selectContactEmailField,selectContactUrlField:b.selectContactUrlField,selectContactUrl:n(b.selectContactUrl),selectInfoTitleField:b.selectInfoTitleField,selectInfoSummaryField:P(b.selectInfoSummaryField),selectInfoDescriptionField:b.selectInfoDescriptionField,selectInfoTermsOfServiceField:b.selectInfoTermsOfServiceField,selectInfoTermsOfServiceUrl:n(b.selectInfoTermsOfServiceUrl),selectExternalDocsDescriptionField:b.selectExternalDocsDescriptionField,selectExternalDocsUrlField:b.selectExternalDocsUrlField,selectExternalDocsUrl:n(b.selectExternalDocsUrl),webhooks:P(b.webhooks),selectWebhooksOperations:P(n(b.selectWebhooksOperations)),selectJsonSchemaDialectField:b.selectJsonSchemaDialectField,selectJsonSchemaDialectDefault:b.selectJsonSchemaDialectDefault,selectSchemas:n(b.selectSchemas)},wrapSelectors:{isOAS3:w.isOAS3,selectLicenseUrl:w.selectLicenseUrl}},oas31:{selectors:{selectLicenseUrl:P(n(E.selectLicenseUrl))}}}}}},45989:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);const o=e=>{let{schema:t,getSystem:n}=e;if(null==t||!t.description)return null;const{getComponent:o}=n(),s=o("Markdown");return r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--description"},r.createElement("div",{className:"json-schema-2020-12-core-keyword__value json-schema-2020-12-core-keyword__value--secondary"},r.createElement(s,{source:t.description})))}},19525:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>c});var r=n(28222),o=n.n(r),s=n(67294),i=n(94184),a=n.n(i),l=n(7749);const c=e=>{let{schema:t,getSystem:n}=e;const r=(null==t?void 0:t.discriminator)||{},{fn:i,getComponent:c}=n(),{useIsExpandedDeeply:u,useComponent:p}=i.jsonSchema202012,h=u(),f=!!r.mapping,[d,m]=(0,s.useState)(h),[g,y]=(0,s.useState)(!1),v=p("Accordion"),b=p("ExpandDeepButton"),w=c("JSONSchema202012DeepExpansionContext")(),E=(0,s.useCallback)((()=>{m((e=>!e))}),[]),x=(0,s.useCallback)(((e,t)=>{m(t),y(t)}),[]);return 0===o()(r).length?null:s.createElement(w.Provider,{value:g},s.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--discriminator"},f?s.createElement(s.Fragment,null,s.createElement(v,{expanded:d,onChange:E},s.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"Discriminator")),s.createElement(b,{expanded:d,onClick:x})):s.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"Discriminator"),r.propertyName&&s.createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted"},r.propertyName),s.createElement("strong",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"object"),s.createElement("ul",{className:a()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!d})},d&&s.createElement("li",{className:"json-schema-2020-12-property"},s.createElement(l.default,{discriminator:r})))))}},7749:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var r=n(28222),o=n.n(r),s=n(97606),i=n.n(s),a=n(2018),l=n.n(a),c=n(67294);const u=e=>{var t;let{discriminator:n}=e;const r=(null==n?void 0:n.mapping)||{};return 0===o()(r).length?null:i()(t=l()(r)).call(t,(e=>{let[t,n]=e;return c.createElement("div",{key:`${t}-${n}`,className:"json-schema-2020-12-keyword"},c.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},t),c.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},n))}))};u.defaultProps={mapping:void 0};const p=u},59450:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);const o=e=>{let{schema:t,getSystem:n}=e;const{fn:o}=n(),{hasKeyword:s,stringify:i}=o.jsonSchema202012.useFn();return s(t,"example")?r.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--example"},r.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"Example"),r.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--const"},i(t.example))):null}},25324:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>c});var r=n(28222),o=n.n(r),s=n(67294),i=n(94184),a=n.n(i),l=n(90242);const c=e=>{let{schema:t,getSystem:n}=e;const r=(null==t?void 0:t.externalDocs)||{},{fn:i,getComponent:c}=n(),{useIsExpandedDeeply:u,useComponent:p}=i.jsonSchema202012,h=u(),f=!(!r.description&&!r.url),[d,m]=(0,s.useState)(h),[g,y]=(0,s.useState)(!1),v=p("Accordion"),b=p("ExpandDeepButton"),w=c("JSONSchema202012KeywordDescription"),E=c("Link"),x=c("JSONSchema202012DeepExpansionContext")(),S=(0,s.useCallback)((()=>{m((e=>!e))}),[]),_=(0,s.useCallback)(((e,t)=>{m(t),y(t)}),[]);return 0===o()(r).length?null:s.createElement(x.Provider,{value:g},s.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--externalDocs"},f?s.createElement(s.Fragment,null,s.createElement(v,{expanded:d,onChange:S},s.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"External documentation")),s.createElement(b,{expanded:d,onClick:_})):s.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"External documentation"),s.createElement("strong",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"object"),s.createElement("ul",{className:a()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!d})},d&&s.createElement(s.Fragment,null,r.description&&s.createElement("li",{className:"json-schema-2020-12-property"},s.createElement(w,{schema:r,getSystem:n})),r.url&&s.createElement("li",{className:"json-schema-2020-12-property"},s.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword"},s.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"url"),s.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},s.createElement(E,{target:"_blank",href:(0,l.Nm)(r.url)},r.url))))))))}},9023:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>g});var r=n(58309),o=n.n(r),s=n(28222),i=n.n(s),a=n(97606),l=n.n(a),c=n(2018),u=n.n(c),p=n(58118),h=n.n(p),f=n(67294),d=n(94184),m=n.n(d);const g=e=>{var t;let{schema:n,getSystem:r}=e;const{fn:s}=r(),{useComponent:a}=s.jsonSchema202012,{getDependentRequired:c,getProperties:p}=s.jsonSchema202012.useFn(),d=s.jsonSchema202012.useConfig(),g=o()(null==n?void 0:n.required)?n.required:[],y=a("JSONSchema"),v=p(n,d);return 0===i()(v).length?null:f.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--properties"},f.createElement("ul",null,l()(t=u()(v)).call(t,(e=>{let[t,r]=e;const o=h()(g).call(g,t),s=c(t,n);return f.createElement("li",{key:t,className:m()("json-schema-2020-12-property",{"json-schema-2020-12-property--required":o})},f.createElement(y,{name:t,schema:r,dependentRequired:s}))}))))}},36617:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r=n(28222),o=n.n(r),s=n(67294),i=n(94184),a=n.n(i);const l=e=>{let{schema:t,getSystem:n}=e;const r=(null==t?void 0:t.xml)||{},{fn:i,getComponent:l}=n(),{useIsExpandedDeeply:c,useComponent:u}=i.jsonSchema202012,p=c(),h=!!(r.name||r.namespace||r.prefix),[f,d]=(0,s.useState)(p),[m,g]=(0,s.useState)(!1),y=u("Accordion"),v=u("ExpandDeepButton"),b=l("JSONSchema202012DeepExpansionContext")(),w=(0,s.useCallback)((()=>{d((e=>!e))}),[]),E=(0,s.useCallback)(((e,t)=>{d(t),g(t)}),[]);return 0===o()(r).length?null:s.createElement(b.Provider,{value:m},s.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--xml"},h?s.createElement(s.Fragment,null,s.createElement(y,{expanded:f,onChange:w},s.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"XML")),s.createElement(v,{expanded:f,onClick:E})):s.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"XML"),!0===r.attribute&&s.createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted"},"attribute"),!0===r.wrapped&&s.createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted"},"wrapped"),s.createElement("strong",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"object"),s.createElement("ul",{className:a()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!f})},f&&s.createElement(s.Fragment,null,r.name&&s.createElement("li",{className:"json-schema-2020-12-property"},s.createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword"},s.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"name"),s.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},r.name))),r.namespace&&s.createElement("li",{className:"json-schema-2020-12-property"},s.createElement("div",{className:"json-schema-2020-12-keyword"},s.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"namespace"),s.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},r.namespace))),r.prefix&&s.createElement("li",{className:"json-schema-2020-12-property"},s.createElement("div",{className:"json-schema-2020-12-keyword"},s.createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"prefix"),s.createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},r.prefix)))))))}},25800:(e,t,n)=>{"use strict";n.r(t),n.d(t,{getProperties:()=>u,makeIsExpandable:()=>c});var r=n(2018),o=n.n(r),s=n(14418),i=n.n(s),a=n(82865),l=n.n(a);const c=(e,t)=>{const{fn:n}=t();if("function"!=typeof e)return null;const{hasKeyword:r}=n.jsonSchema202012;return t=>e(t)||r(t,"example")||(null==t?void 0:t.xml)||(null==t?void 0:t.discriminator)||(null==t?void 0:t.externalDocs)},u=(e,t)=>{let{includeReadOnly:n,includeWriteOnly:r}=t;if(null==e||!e.properties)return{};const s=o()(e.properties),a=i()(s).call(s,(e=>{let[,t]=e;const o=!0===(null==t?void 0:t.readOnly),s=!0===(null==t?void 0:t.writeOnly);return(!o||n)&&(!s||r)}));return l()(a)}},14951:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);const o=(0,n(84380).createOnlyOAS31ComponentWrapper)((e=>{let{schema:t,getSystem:n,originalComponent:o}=e;const{getComponent:s}=n(),i=s("JSONSchema202012KeywordDiscriminator"),a=s("JSONSchema202012KeywordXml"),l=s("JSONSchema202012KeywordExample"),c=s("JSONSchema202012KeywordExternalDocs");return r.createElement(r.Fragment,null,r.createElement(o,{schema:t}),r.createElement(i,{schema:t,getSystem:n}),r.createElement(a,{schema:t,getSystem:n}),r.createElement(c,{schema:t,getSystem:n}),r.createElement(l,{schema:t,getSystem:n}))}))},80809:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(45989);const o=(0,n(84380).createOnlyOAS31ComponentWrapper)(r.default)},77536:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(9023);const o=(0,n(84380).createOnlyOAS31ComponentWrapper)(r.default)},64280:(e,t,n)=>{"use strict";n.r(t),n.d(t,{selectLicenseUrl:()=>s});var r=n(20573),o=n(63543);const s=(0,r.P1)(((e,t)=>t.specSelectors.url()),((e,t)=>t.oas3Selectors.selectedServer()),((e,t)=>t.specSelectors.selectLicenseUrlField()),((e,t)=>t.specSelectors.selectLicenseIdentifierField()),((e,t,n,r)=>n?(0,o.mn)(n,e,{selectedServer:t}):r?`https://spdx.org/licenses/${r}.html`:void 0))},9305:(e,t,n)=>{"use strict";n.r(t),n.d(t,{contact:()=>A,isOAS31:()=>w,license:()=>S,selectContactEmailField:()=>P,selectContactNameField:()=>C,selectContactUrl:()=>I,selectContactUrlField:()=>N,selectExternalDocsDescriptionField:()=>L,selectExternalDocsUrl:()=>$,selectExternalDocsUrlField:()=>B,selectInfoDescriptionField:()=>M,selectInfoSummaryField:()=>R,selectInfoTermsOfServiceField:()=>D,selectInfoTermsOfServiceUrl:()=>F,selectInfoTitleField:()=>T,selectJsonSchemaDialectDefault:()=>U,selectJsonSchemaDialectField:()=>q,selectLicenseIdentifierField:()=>k,selectLicenseNameField:()=>_,selectLicenseUrl:()=>O,selectLicenseUrlField:()=>j,selectSchemas:()=>z,selectWebhooksOperations:()=>x,webhooks:()=>E});var r=n(97606),o=n.n(r),s=n(24282),i=n.n(s),a=n(14418),l=n.n(a),c=n(58118),u=n.n(c),p=n(39022),h=n.n(p),f=n(2018),d=n.n(f),m=n(43393),g=n(20573),y=n(63543),v=n(84380);const b=(0,m.Map)(),w=(0,g.P1)(((e,t)=>t.specSelectors.specJson()),v.isOAS31),E=()=>e=>e.specSelectors.specJson().get("webhooks",b),x=(0,g.P1)(((e,t)=>t.specSelectors.webhooks()),((e,t)=>t.specSelectors.validOperationMethods()),((e,t)=>t.specSelectors.specResolvedSubtree(["webhooks"])),((e,t)=>{var n;return m.Map.isMap(e)?o()(n=i()(e).call(e,((e,n,r)=>{var s,i;if(!m.Map.isMap(n))return e;const a=o()(s=l()(i=n.entrySeq()).call(i,(e=>{let[n]=e;return u()(t).call(t,n)}))).call(s,(e=>{let[t,n]=e;return{operation:(0,m.Map)({operation:n}),method:t,path:r,specPath:(0,m.List)(["webhooks",r,t])}}));return h()(e).call(e,a)}),(0,m.List)()).groupBy((e=>e.path))).call(n,(e=>e.toArray())).toObject():{}})),S=()=>e=>e.specSelectors.info().get("license",b),_=()=>e=>e.specSelectors.license().get("name","License"),j=()=>e=>e.specSelectors.license().get("url"),O=(0,g.P1)(((e,t)=>t.specSelectors.url()),((e,t)=>t.oas3Selectors.selectedServer()),((e,t)=>t.specSelectors.selectLicenseUrlField()),((e,t,n)=>{if(n)return(0,y.mn)(n,e,{selectedServer:t})})),k=()=>e=>e.specSelectors.license().get("identifier"),A=()=>e=>e.specSelectors.info().get("contact",b),C=()=>e=>e.specSelectors.contact().get("name","the developer"),P=()=>e=>e.specSelectors.contact().get("email"),N=()=>e=>e.specSelectors.contact().get("url"),I=(0,g.P1)(((e,t)=>t.specSelectors.url()),((e,t)=>t.oas3Selectors.selectedServer()),((e,t)=>t.specSelectors.selectContactUrlField()),((e,t,n)=>{if(n)return(0,y.mn)(n,e,{selectedServer:t})})),T=()=>e=>e.specSelectors.info().get("title"),R=()=>e=>e.specSelectors.info().get("summary"),M=()=>e=>e.specSelectors.info().get("description"),D=()=>e=>e.specSelectors.info().get("termsOfService"),F=(0,g.P1)(((e,t)=>t.specSelectors.url()),((e,t)=>t.oas3Selectors.selectedServer()),((e,t)=>t.specSelectors.selectInfoTermsOfServiceField()),((e,t,n)=>{if(n)return(0,y.mn)(n,e,{selectedServer:t})})),L=()=>e=>e.specSelectors.externalDocs().get("description"),B=()=>e=>e.specSelectors.externalDocs().get("url"),$=(0,g.P1)(((e,t)=>t.specSelectors.url()),((e,t)=>t.oas3Selectors.selectedServer()),((e,t)=>t.specSelectors.selectExternalDocsUrlField()),((e,t,n)=>{if(n)return(0,y.mn)(n,e,{selectedServer:t})})),q=()=>e=>e.specSelectors.specJson().get("jsonSchemaDialect"),U=()=>"https://spec.openapis.org/oas/3.1/dialect/base",z=(0,g.P1)(((e,t)=>t.specSelectors.definitions()),((e,t)=>t.specSelectors.specResolvedSubtree(["components","schemas"])),((e,t)=>{var n;return m.Map.isMap(e)?m.Map.isMap(t)?i()(n=d()(e.toJS())).call(n,((e,n)=>{let[r,o]=n;const s=t.get(r);return e[r]=(null==s?void 0:s.toJS())||o,e}),{}):e.toJS():{}}))},32884:(e,t,n)=>{"use strict";n.r(t),n.d(t,{isOAS3:()=>o,selectLicenseUrl:()=>s});var r=n(84380);const o=(e,t)=>function(n){const r=t.specSelectors.isOAS31();for(var o=arguments.length,s=new Array(o>1?o-1:0),i=1;i(e,t)=>t.oas31Selectors.selectLicenseUrl()))},77423:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);const o=(0,n(84380).createOnlyOAS31ComponentWrapper)((e=>{let{getSystem:t}=e;const n=t().getComponent("OAS31Contact",!0);return r.createElement(n,null)}))},284:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);const o=(0,n(84380).createOnlyOAS31ComponentWrapper)((e=>{let{getSystem:t}=e;const n=t().getComponent("OAS31Info",!0);return r.createElement(n,null)}))},6608:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);const o=(0,n(84380).createOnlyOAS31ComponentWrapper)((e=>{let{getSystem:t}=e;const n=t().getComponent("OAS31License",!0);return r.createElement(n,null)}))},17042:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r=n(67294),o=n(84380),s=n(25800);const i=(0,o.createOnlyOAS31ComponentWrapper)((e=>{let{getSystem:t,...n}=e;const o=t(),{getComponent:i,fn:a,getConfigs:l}=o,c=l(),u=i("OAS31Model"),p=i("JSONSchema202012"),h=i("JSONSchema202012Keyword$schema"),f=i("JSONSchema202012Keyword$vocabulary"),d=i("JSONSchema202012Keyword$id"),m=i("JSONSchema202012Keyword$anchor"),g=i("JSONSchema202012Keyword$dynamicAnchor"),y=i("JSONSchema202012Keyword$ref"),v=i("JSONSchema202012Keyword$dynamicRef"),b=i("JSONSchema202012Keyword$defs"),w=i("JSONSchema202012Keyword$comment"),E=i("JSONSchema202012KeywordAllOf"),x=i("JSONSchema202012KeywordAnyOf"),S=i("JSONSchema202012KeywordOneOf"),_=i("JSONSchema202012KeywordNot"),j=i("JSONSchema202012KeywordIf"),O=i("JSONSchema202012KeywordThen"),k=i("JSONSchema202012KeywordElse"),A=i("JSONSchema202012KeywordDependentSchemas"),C=i("JSONSchema202012KeywordPrefixItems"),P=i("JSONSchema202012KeywordItems"),N=i("JSONSchema202012KeywordContains"),I=i("JSONSchema202012KeywordProperties"),T=i("JSONSchema202012KeywordPatternProperties"),R=i("JSONSchema202012KeywordAdditionalProperties"),M=i("JSONSchema202012KeywordPropertyNames"),D=i("JSONSchema202012KeywordUnevaluatedItems"),F=i("JSONSchema202012KeywordUnevaluatedProperties"),L=i("JSONSchema202012KeywordType"),B=i("JSONSchema202012KeywordEnum"),$=i("JSONSchema202012KeywordConst"),q=i("JSONSchema202012KeywordConstraint"),U=i("JSONSchema202012KeywordDependentRequired"),z=i("JSONSchema202012KeywordContentSchema"),V=i("JSONSchema202012KeywordTitle"),W=i("JSONSchema202012KeywordDescription"),J=i("JSONSchema202012KeywordDefault"),K=i("JSONSchema202012KeywordDeprecated"),H=i("JSONSchema202012KeywordReadOnly"),G=i("JSONSchema202012KeywordWriteOnly"),Z=i("JSONSchema202012Accordion"),Y=i("JSONSchema202012ExpandDeepButton"),X=i("JSONSchema202012ChevronRightIcon"),Q=i("withJSONSchema202012Context")(u,{config:{default$schema:"https://spec.openapis.org/oas/3.1/dialect/base",defaultExpandedLevels:c.defaultModelExpandDepth,includeReadOnly:Boolean(n.includeReadOnly),includeWriteOnly:Boolean(n.includeWriteOnly)},components:{JSONSchema:p,Keyword$schema:h,Keyword$vocabulary:f,Keyword$id:d,Keyword$anchor:m,Keyword$dynamicAnchor:g,Keyword$ref:y,Keyword$dynamicRef:v,Keyword$defs:b,Keyword$comment:w,KeywordAllOf:E,KeywordAnyOf:x,KeywordOneOf:S,KeywordNot:_,KeywordIf:j,KeywordThen:O,KeywordElse:k,KeywordDependentSchemas:A,KeywordPrefixItems:C,KeywordItems:P,KeywordContains:N,KeywordProperties:I,KeywordPatternProperties:T,KeywordAdditionalProperties:R,KeywordPropertyNames:M,KeywordUnevaluatedItems:D,KeywordUnevaluatedProperties:F,KeywordType:L,KeywordEnum:B,KeywordConst:$,KeywordConstraint:q,KeywordDependentRequired:U,KeywordContentSchema:z,KeywordTitle:V,KeywordDescription:W,KeywordDefault:J,KeywordDeprecated:K,KeywordReadOnly:H,KeywordWriteOnly:G,Accordion:Z,ExpandDeepButton:Y,ChevronRightIcon:X},fn:{upperFirst:a.upperFirst,isExpandable:(0,s.makeIsExpandable)(a.jsonSchema202012.isExpandable,t),getProperties:s.getProperties}});return r.createElement(Q,n)}))},22914:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(67294);const o=(0,n(84380).createOnlyOAS31ComponentWrapper)((e=>{let{getSystem:t}=e;const{getComponent:n,fn:s,getConfigs:i}=t(),a=i();if(o.ModelsWithJSONSchemaContext)return r.createElement(o.ModelsWithJSONSchemaContext,null);const l=n("OAS31Models",!0),c=n("JSONSchema202012"),u=n("JSONSchema202012Keyword$schema"),p=n("JSONSchema202012Keyword$vocabulary"),h=n("JSONSchema202012Keyword$id"),f=n("JSONSchema202012Keyword$anchor"),d=n("JSONSchema202012Keyword$dynamicAnchor"),m=n("JSONSchema202012Keyword$ref"),g=n("JSONSchema202012Keyword$dynamicRef"),y=n("JSONSchema202012Keyword$defs"),v=n("JSONSchema202012Keyword$comment"),b=n("JSONSchema202012KeywordAllOf"),w=n("JSONSchema202012KeywordAnyOf"),E=n("JSONSchema202012KeywordOneOf"),x=n("JSONSchema202012KeywordNot"),S=n("JSONSchema202012KeywordIf"),_=n("JSONSchema202012KeywordThen"),j=n("JSONSchema202012KeywordElse"),O=n("JSONSchema202012KeywordDependentSchemas"),k=n("JSONSchema202012KeywordPrefixItems"),A=n("JSONSchema202012KeywordItems"),C=n("JSONSchema202012KeywordContains"),P=n("JSONSchema202012KeywordProperties"),N=n("JSONSchema202012KeywordPatternProperties"),I=n("JSONSchema202012KeywordAdditionalProperties"),T=n("JSONSchema202012KeywordPropertyNames"),R=n("JSONSchema202012KeywordUnevaluatedItems"),M=n("JSONSchema202012KeywordUnevaluatedProperties"),D=n("JSONSchema202012KeywordType"),F=n("JSONSchema202012KeywordEnum"),L=n("JSONSchema202012KeywordConst"),B=n("JSONSchema202012KeywordConstraint"),$=n("JSONSchema202012KeywordDependentRequired"),q=n("JSONSchema202012KeywordContentSchema"),U=n("JSONSchema202012KeywordTitle"),z=n("JSONSchema202012KeywordDescription"),V=n("JSONSchema202012KeywordDefault"),W=n("JSONSchema202012KeywordDeprecated"),J=n("JSONSchema202012KeywordReadOnly"),K=n("JSONSchema202012KeywordWriteOnly"),H=n("JSONSchema202012Accordion"),G=n("JSONSchema202012ExpandDeepButton"),Z=n("JSONSchema202012ChevronRightIcon"),Y=n("withJSONSchema202012Context");return o.ModelsWithJSONSchemaContext=Y(l,{config:{default$schema:"https://spec.openapis.org/oas/3.1/dialect/base",defaultExpandedLevels:a.defaultModelsExpandDepth-1,includeReadOnly:!0,includeWriteOnly:!0},components:{JSONSchema:c,Keyword$schema:u,Keyword$vocabulary:p,Keyword$id:h,Keyword$anchor:f,Keyword$dynamicAnchor:d,Keyword$ref:m,Keyword$dynamicRef:g,Keyword$defs:y,Keyword$comment:v,KeywordAllOf:b,KeywordAnyOf:w,KeywordOneOf:E,KeywordNot:x,KeywordIf:S,KeywordThen:_,KeywordElse:j,KeywordDependentSchemas:O,KeywordPrefixItems:k,KeywordItems:A,KeywordContains:C,KeywordProperties:P,KeywordPatternProperties:N,KeywordAdditionalProperties:I,KeywordPropertyNames:T,KeywordUnevaluatedItems:R,KeywordUnevaluatedProperties:M,KeywordType:D,KeywordEnum:F,KeywordConst:L,KeywordConstraint:B,KeywordDependentRequired:$,KeywordContentSchema:q,KeywordTitle:U,KeywordDescription:z,KeywordDefault:V,KeywordDeprecated:W,KeywordReadOnly:J,KeywordWriteOnly:K,Accordion:H,ExpandDeepButton:G,ChevronRightIcon:Z},fn:{upperFirst:s.upperFirst,isExpandable:s.jsonSchema202012.isExpandable,getProperties:s.jsonSchema202012.getProperties}}),r.createElement(o.ModelsWithJSONSchemaContext,null)}));o.ModelsWithJSONSchemaContext=null;const s=o},41434:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r=n(23101),o=n.n(r),s=n(67294);const i=(e,t)=>e=>{const n=t.specSelectors.isOAS31(),r=t.getComponent("OAS31VersionPragmaFilter");return s.createElement(r,o()({isOAS31:n},e))}},1122:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);const o=(0,n(84380).createOnlyOAS31ComponentWrapper)((e=>{let{originalComponent:t,...n}=e;return r.createElement("span",null,r.createElement(t,n),r.createElement("small",{className:"version-stamp"},r.createElement("pre",{className:"version"},"OAS 3.1")))}))},28560:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r=n(87198),o=n.n(r);let s=!1;function i(){return{statePlugins:{spec:{wrapActions:{updateSpec:e=>function(){return s=!0,e(...arguments)},updateJsonSpec:(e,t)=>function(){const n=t.getConfigs().onComplete;return s&&"function"==typeof n&&(o()(n,0),s=!1),e(...arguments)}}}}}}},92135:(e,t,n)=>{"use strict";n.r(t),n.d(t,{requestSnippetGenerator_curl_bash:()=>j,requestSnippetGenerator_curl_cmd:()=>O,requestSnippetGenerator_curl_powershell:()=>_});var r=n(11882),o=n.n(r),s=n(81607),i=n.n(s),a=n(35627),l=n.n(a),c=n(97606),u=n.n(c),p=n(12196),h=n.n(p),f=n(74386),d=n.n(f),m=n(58118),g=n.n(m),y=n(27504),v=n(43393);const b=e=>{var t;const n="_**[]";return o()(e).call(e,n)<0?e:i()(t=e.split(n)[0]).call(t)},w=e=>"-d "===e||/^[_\/-]/g.test(e)?e:"'"+e.replace(/'/g,"'\\''")+"'",E=e=>"-d "===(e=e.replace(/\^/g,"^^").replace(/\\"/g,'\\\\"').replace(/"/g,'""').replace(/\n/g,"^\n"))?e.replace(/-d /g,"-d ^\n"):/^[_\/-]/g.test(e)?e:'"'+e+'"',x=e=>"-d "===e?e:/\n/.test(e)?'@"\n'+e.replace(/"/g,'\\"').replace(/`/g,"``").replace(/\$/,"`$")+'\n"@':/^[_\/-]/g.test(e)?e:"'"+e.replace(/"/g,'""').replace(/'/g,"''")+"'";const S=function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",o=!1,s="";const i=function(){for(var e=arguments.length,n=new Array(e),r=0;rs+=` ${n}`,p=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return s+=h()(" ").call(" ",e)};let f=e.get("headers");if(s+="curl"+r,e.has("curlOptions")&&i(...e.get("curlOptions")),i("-X",e.get("method")),c(),p(),a(`${e.get("url")}`),f&&f.size)for(let t of d()(m=e.get("headers")).call(m)){var m;c(),p();let[e,n]=t;a("-H",`${e}: ${n}`),o=o||/^content-type$/i.test(e)&&/^multipart\/form-data$/i.test(n)}const w=e.get("body");var E;if(w)if(o&&g()(E=["POST","PUT","PATCH"]).call(E,e.get("method")))for(let[e,t]of w.entrySeq()){let n=b(e);c(),p(),a("-F"),t instanceof y.Z.File?i(`${n}=@${t.name}${t.type?`;type=${t.type}`:""}`):i(`${n}=${t}`)}else if(w instanceof y.Z.File)c(),p(),a(`--data-binary '@${w.name}'`);else{c(),p(),a("-d ");let t=w;v.Map.isMap(t)?a(function(e){let t=[];for(let[n,r]of e.get("body").entrySeq()){let e=b(n);r instanceof y.Z.File?t.push(` "${e}": {\n "name": "${r.name}"${r.type?`,\n "type": "${r.type}"`:""}\n }`):t.push(` "${e}": ${l()(r,null,2).replace(/(\r\n|\r|\n)/g,"\n ")}`)}return`{\n${t.join(",\n")}\n}`}(e)):("string"!=typeof t&&(t=l()(t)),a(t))}else w||"POST"!==e.get("method")||(c(),p(),a("-d ''"));return s},_=e=>S(e,x,"`\n",".exe"),j=e=>S(e,w,"\\\n"),O=e=>S(e,E,"^\n")},86575:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r=n(92135),o=n(4669),s=n(84206);const i=()=>({components:{RequestSnippets:s.default},fn:r,statePlugins:{requestSnippets:{selectors:o}}})},84206:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>w});var r=n(14418),o=n.n(r),s=n(25110),i=n.n(s),a=n(86),l=n.n(a),c=n(97606),u=n.n(c),p=n(67294),h=n(27361),f=n.n(h),d=n(23560),m=n.n(d),g=n(74855),y=n(33424);const v={cursor:"pointer",lineHeight:1,display:"inline-flex",backgroundColor:"rgb(250, 250, 250)",paddingBottom:"0",paddingTop:"0",border:"1px solid rgb(51, 51, 51)",borderRadius:"4px 4px 0 0",boxShadow:"none",borderBottom:"none"},b={cursor:"pointer",lineHeight:1,display:"inline-flex",backgroundColor:"rgb(51, 51, 51)",boxShadow:"none",border:"1px solid rgb(51, 51, 51)",paddingBottom:"0",paddingTop:"0",borderRadius:"4px 4px 0 0",marginTop:"-5px",marginRight:"-5px",marginLeft:"-5px",zIndex:"9999",borderBottom:"none"},w=e=>{var t,n;let{request:r,requestSnippetsSelectors:s,getConfigs:a}=e;const c=m()(a)?a():null,h=!1!==f()(c,"syntaxHighlight")&&f()(c,"syntaxHighlight.activated",!0),d=(0,p.useRef)(null),[w,E]=(0,p.useState)(null===(t=s.getSnippetGenerators())||void 0===t?void 0:t.keySeq().first()),[x,S]=(0,p.useState)(null==s?void 0:s.getDefaultExpanded());(0,p.useEffect)((()=>{}),[]),(0,p.useEffect)((()=>{var e;const t=o()(e=i()(d.current.childNodes)).call(e,(e=>{var t;return!!e.nodeType&&(null===(t=e.classList)||void 0===t?void 0:t.contains("curl-command"))}));return l()(t).call(t,(e=>e.addEventListener("mousewheel",C,{passive:!1}))),()=>{l()(t).call(t,(e=>e.removeEventListener("mousewheel",C)))}}),[r]);const _=s.getSnippetGenerators(),j=_.get(w),O=j.get("fn")(r),k=()=>{S(!x)},A=e=>e===w?b:v,C=e=>{const{target:t,deltaY:n}=e,{scrollHeight:r,offsetHeight:o,scrollTop:s}=t;r>o&&(0===s&&n<0||o+s>=r&&n>0)&&e.preventDefault()},P=h?p.createElement(y.d3,{language:j.get("syntax"),className:"curl microlight",style:(0,y.C2)(f()(c,"syntaxHighlight.theme"))},O):p.createElement("textarea",{readOnly:!0,className:"curl",value:O});return p.createElement("div",{className:"request-snippets",ref:d},p.createElement("div",{style:{width:"100%",display:"flex",justifyContent:"flex-start",alignItems:"center",marginBottom:"15px"}},p.createElement("h4",{onClick:()=>k(),style:{cursor:"pointer"}},"Snippets"),p.createElement("button",{onClick:()=>k(),style:{border:"none",background:"none"},title:x?"Collapse operation":"Expand operation"},p.createElement("svg",{className:"arrow",width:"10",height:"10"},p.createElement("use",{href:x?"#large-arrow-down":"#large-arrow",xlinkHref:x?"#large-arrow-down":"#large-arrow"})))),x&&p.createElement("div",{className:"curl-command"},p.createElement("div",{style:{paddingLeft:"15px",paddingRight:"10px",width:"100%",display:"flex"}},u()(n=_.entrySeq()).call(n,(e=>{let[t,n]=e;return p.createElement("div",{style:A(t),className:"btn",key:t,onClick:()=>(e=>{w!==e&&E(e)})(t)},p.createElement("h4",{style:t===w?{color:"white"}:{}},n.get("title")))}))),p.createElement("div",{className:"copy-to-clipboard"},p.createElement(g.CopyToClipboard,{text:O},p.createElement("button",null))),p.createElement("div",null,P)))}},4669:(e,t,n)=>{"use strict";n.r(t),n.d(t,{getActiveLanguage:()=>d,getDefaultExpanded:()=>m,getGenerators:()=>h,getSnippetGenerators:()=>f});var r=n(14418),o=n.n(r),s=n(58118),i=n.n(s),a=n(97606),l=n.n(a),c=n(20573),u=n(43393);const p=e=>e||(0,u.Map)(),h=(0,c.P1)(p,(e=>{const t=e.get("languages"),n=e.get("generators",(0,u.Map)());return!t||t.isEmpty()?n:o()(n).call(n,((e,n)=>i()(t).call(t,n)))})),f=e=>t=>{var n,r;let{fn:s}=t;return o()(n=l()(r=h(e)).call(r,((e,t)=>{const n=(e=>s[`requestSnippetGenerator_${e}`])(t);return"function"!=typeof n?null:e.set("fn",n)}))).call(n,(e=>e))},d=(0,c.P1)(p,(e=>e.get("activeLanguage"))),m=(0,c.P1)(p,(e=>e.get("defaultExpanded")))},36195:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ErrorBoundary:()=>i,default:()=>a});var r=n(67294),o=n(56189),s=n(29403);class i extends r.Component{static getDerivedStateFromError(e){return{hasError:!0,error:e}}constructor(){super(...arguments),this.state={hasError:!1,error:null}}componentDidCatch(e,t){this.props.fn.componentDidCatch(e,t)}render(){const{getComponent:e,targetName:t,children:n}=this.props;if(this.state.hasError){const n=e("Fallback");return r.createElement(n,{name:t})}return n}}i.defaultProps={targetName:"this component",getComponent:()=>s.default,fn:{componentDidCatch:o.componentDidCatch},children:null};const a=i},29403:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(67294);const o=e=>{let{name:t}=e;return r.createElement("div",{className:"fallback"},"😱 ",r.createElement("i",null,"Could not render ","t"===t?"this component":t,", see the console."))}},56189:(e,t,n)=>{"use strict";n.r(t),n.d(t,{componentDidCatch:()=>i,withErrorBoundary:()=>a});var r=n(23101),o=n.n(r),s=n(67294);const i=console.error,a=e=>t=>{const{getComponent:n,fn:r}=e(),i=n("ErrorBoundary"),a=r.getDisplayName(t);class l extends s.Component{render(){return s.createElement(i,{targetName:a,getComponent:n,fn:r},s.createElement(t,o()({},this.props,this.context)))}}var c;return l.displayName=`WithErrorBoundary(${a})`,(c=t).prototype&&c.prototype.isReactComponent&&(l.prototype.mapStateToProps=t.prototype.mapStateToProps),l}},27621:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var r=n(47475),o=n.n(r),s=n(7287),i=n.n(s),a=n(36195),l=n(29403),c=n(56189);const u=function(){let{componentList:e=[],fullOverride:t=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return n=>{var r;let{getSystem:s}=n;const u=t?e:["App","BaseLayout","VersionPragmaFilter","InfoContainer","ServersContainer","SchemesContainer","AuthorizeBtnContainer","FilterContainer","Operations","OperationContainer","parameters","responses","OperationServers","Models","ModelWrapper",...e],p=i()(u,o()(r=Array(u.length)).call(r,((e,t)=>{let{fn:n}=t;return n.withErrorBoundary(e)})));return{fn:{componentDidCatch:c.componentDidCatch,withErrorBoundary:(0,c.withErrorBoundary)(s)},components:{ErrorBoundary:a.default,Fallback:l.default},wrapComponents:p}}}},72846:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var r=n(24282),o=n.n(r),s=n(35627),i=n.n(s),a=n(59704),l=n.n(a);const c=[{when:/json/,shouldStringifyTypes:["string"]}],u=["object"],p=e=>(t,n,r,s)=>{const{fn:a}=e(),p=a.memoizedSampleFromSchema(t,n,s),h=typeof p,f=o()(c).call(c,((e,t)=>t.when.test(r)?[...e,...t.shouldStringifyTypes]:e),u);return l()(f,(e=>e===h))?i()(p,null,2):p}},16132:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=e=>function(t){var n,r;let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0;const{fn:a}=e();return"function"==typeof(null===(n=t)||void 0===n?void 0:n.toJS)&&(t=t.toJS()),"function"==typeof(null===(r=i)||void 0===r?void 0:r.toJS)&&(i=i.toJS()),/xml/.test(o)?a.getXmlSampleSchema(t,s,i):/(yaml|yml)/.test(o)?a.getYamlSampleSchema(t,s,o,i):a.getJsonSampleSchema(t,s,o,i)}},81169:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=e=>(t,n,r)=>{const{fn:o}=e();if(t&&!t.xml&&(t.xml={}),t&&!t.xml.name){if(!t.$$ref&&(t.type||t.items||t.properties||t.additionalProperties))return'\n\x3c!-- XML example cannot be generated; root element name is undefined --\x3e';if(t.$$ref){let e=t.$$ref.match(/\S*\/(\S+)$/);t.xml.name=e[1]}}return o.memoizedCreateXMLExample(t,n,r)}},79431:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r=n(24278),o=n.n(r),s=n(1272);const i=e=>(t,n,r,i)=>{const{fn:a}=e(),l=a.getJsonSampleSchema(t,n,r,i);let c;try{c=s.ZP.dump(s.ZP.load(l),{lineWidth:-1},{schema:s.A8}),"\n"===c[c.length-1]&&(c=o()(c).call(c,0,c.length-1))}catch(e){return console.error(e),"error: could not generate yaml example"}return c.replace(/\t/g," ")}},29812:(e,t,n)=>{"use strict";n.r(t),n.d(t,{createXMLExample:()=>q,inferSchema:()=>$,memoizedCreateXMLExample:()=>V,memoizedSampleFromSchema:()=>W,sampleFromSchema:()=>U,sampleFromSchemaGeneric:()=>B});var r=n(11882),o=n.n(r),s=n(86),i=n.n(s),a=n(58309),l=n.n(a),c=n(58118),u=n.n(c),p=n(92039),h=n.n(p),f=n(24278),d=n.n(f),m=n(51679),g=n.n(m),y=n(39022),v=n.n(y),b=n(97606),w=n.n(b),E=n(35627),x=n.n(E),S=n(53479),_=n.n(S),j=n(14419),O=n.n(j),k=n(41609),A=n.n(k),C=n(90242),P=n(60314);const N={string:e=>e.pattern?(e=>{try{return new(O())(e).gen()}catch(e){return"string"}})(e.pattern):"string",string_email:()=>"user@example.com","string_date-time":()=>(new Date).toISOString(),string_date:()=>(new Date).toISOString().substring(0,10),string_uuid:()=>"3fa85f64-5717-4562-b3fc-2c963f66afa6",string_hostname:()=>"example.com",string_ipv4:()=>"198.51.100.42",string_ipv6:()=>"2001:0db8:5b96:0000:0000:426f:8e17:642a",number:()=>0,number_float:()=>0,integer:()=>0,boolean:e=>"boolean"!=typeof e.default||e.default},I=e=>{e=(0,C.mz)(e);let{type:t,format:n}=e,r=N[`${t}_${n}`]||N[t];return(0,C.Wl)(r)?r(e):"Unknown Type: "+e.type},T=e=>(0,C.XV)(e,"$$ref",(e=>"string"==typeof e&&o()(e).call(e,"#")>-1)),R=["maxProperties","minProperties"],M=["minItems","maxItems"],D=["minimum","maximum","exclusiveMinimum","exclusiveMaximum"],F=["minLength","maxLength"],L=function(e,t){var n;let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var s;(i()(n=["example","default","enum","xml","type",...R,...M,...D,...F]).call(n,(n=>(n=>{void 0===t[n]&&void 0!==e[n]&&(t[n]=e[n])})(n))),void 0!==e.required&&l()(e.required))&&(void 0!==t.required&&t.required.length||(t.required=[]),i()(s=e.required).call(s,(e=>{var n;u()(n=t.required).call(n,e)||t.required.push(e)})));if(e.properties){t.properties||(t.properties={});let n=(0,C.mz)(e.properties);for(let s in n){var a;if(Object.prototype.hasOwnProperty.call(n,s))if(!n[s]||!n[s].deprecated)if(!n[s]||!n[s].readOnly||r.includeReadOnly)if(!n[s]||!n[s].writeOnly||r.includeWriteOnly)if(!t.properties[s])t.properties[s]=n[s],!e.required&&l()(e.required)&&-1!==o()(a=e.required).call(a,s)&&(t.required?t.required.push(s):t.required=[s])}}return e.items&&(t.items||(t.items={}),t.items=L(e.items,t.items,r)),t},B=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];e&&(0,C.Wl)(e.toJS)&&(e=e.toJS());let s=void 0!==n||e&&void 0!==e.example||e&&void 0!==e.default;const a=!s&&e&&e.oneOf&&e.oneOf.length>0,c=!s&&e&&e.anyOf&&e.anyOf.length>0;if(!s&&(a||c)){const n=(0,C.mz)(a?e.oneOf[0]:e.anyOf[0]);if(L(n,e,t),!e.xml&&n.xml&&(e.xml=n.xml),void 0!==e.example&&void 0!==n.example)s=!0;else if(n.properties){e.properties||(e.properties={});let r=(0,C.mz)(n.properties);for(let s in r){var p;if(Object.prototype.hasOwnProperty.call(r,s))if(!r[s]||!r[s].deprecated)if(!r[s]||!r[s].readOnly||t.includeReadOnly)if(!r[s]||!r[s].writeOnly||t.includeWriteOnly)if(!e.properties[s])e.properties[s]=r[s],!n.required&&l()(n.required)&&-1!==o()(p=n.required).call(p,s)&&(e.required?e.required.push(s):e.required=[s])}}}const f={};let{xml:m,type:y,example:b,properties:E,additionalProperties:x,items:S}=e||{},{includeReadOnly:_,includeWriteOnly:j}=t;m=m||{};let O,{name:k,prefix:P,namespace:N}=m,F={};if(r&&(k=k||"notagname",O=(P?P+":":"")+k,N)){f[P?"xmlns:"+P:"xmlns"]=N}r&&(F[O]=[]);const $=t=>h()(t).call(t,(t=>Object.prototype.hasOwnProperty.call(e,t)));e&&!y&&(E||x||$(R)?y="object":S||$(M)?y="array":$(D)?(y="number",e.type="number"):s||e.enum||(y="string",e.type="string"));const q=t=>{var n,r,o,s,i;null!==(null===(n=e)||void 0===n?void 0:n.maxItems)&&void 0!==(null===(r=e)||void 0===r?void 0:r.maxItems)&&(t=d()(t).call(t,0,null===(i=e)||void 0===i?void 0:i.maxItems));if(null!==(null===(o=e)||void 0===o?void 0:o.minItems)&&void 0!==(null===(s=e)||void 0===s?void 0:s.minItems)){let n=0;for(;t.length<(null===(a=e)||void 0===a?void 0:a.minItems);){var a;t.push(t[n++%t.length])}}return t},U=(0,C.mz)(E);let z,V=0;const W=()=>e&&null!==e.maxProperties&&void 0!==e.maxProperties&&V>=e.maxProperties,J=t=>!e||null===e.maxProperties||void 0===e.maxProperties||!W()&&(!(t=>{var n;return!(e&&e.required&&e.required.length&&u()(n=e.required).call(n,t))})(t)||e.maxProperties-V-(()=>{if(!e||!e.required)return 0;let t=0;var n,o;return r?i()(n=e.required).call(n,(e=>t+=void 0===F[e]?0:1)):i()(o=e.required).call(o,(e=>{var n;return t+=void 0===(null===(n=F[O])||void 0===n?void 0:g()(n).call(n,(t=>void 0!==t[e])))?0:1})),e.required.length-t})()>0);if(z=r?function(n){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;if(e&&U[n]){if(U[n].xml=U[n].xml||{},U[n].xml.attribute){const e=l()(U[n].enum)?U[n].enum[0]:void 0,t=U[n].example,r=U[n].default;return void(f[U[n].xml.name||n]=void 0!==t?t:void 0!==r?r:void 0!==e?e:I(U[n]))}U[n].xml.name=U[n].xml.name||n}else U[n]||!1===x||(U[n]={xml:{name:n}});let s=B(e&&U[n]||void 0,t,o,r);var i;J(n)&&(V++,l()(s)?F[O]=v()(i=F[O]).call(i,s):F[O].push(s))}:(n,o)=>{if(J(n)){if(Object.prototype.hasOwnProperty.call(e,"discriminator")&&e.discriminator&&Object.prototype.hasOwnProperty.call(e.discriminator,"mapping")&&e.discriminator.mapping&&Object.prototype.hasOwnProperty.call(e,"$$ref")&&e.$$ref&&e.discriminator.propertyName===n){for(let t in e.discriminator.mapping)if(-1!==e.$$ref.search(e.discriminator.mapping[t])){F[n]=t;break}}else F[n]=B(U[n],t,o,r);V++}},s){let o;if(o=T(void 0!==n?n:void 0!==b?b:e.default),!r){if("number"==typeof o&&"string"===y)return`${o}`;if("string"!=typeof o||"string"===y)return o;try{return JSON.parse(o)}catch(e){return o}}if(e||(y=l()(o)?"array":typeof o),"array"===y){if(!l()(o)){if("string"==typeof o)return o;o=[o]}const n=e?e.items:void 0;n&&(n.xml=n.xml||m||{},n.xml.name=n.xml.name||m.name);let s=w()(o).call(o,(e=>B(n,t,e,r)));return s=q(s),m.wrapped?(F[O]=s,A()(f)||F[O].push({_attr:f})):F=s,F}if("object"===y){if("string"==typeof o)return o;for(let t in o)Object.prototype.hasOwnProperty.call(o,t)&&(e&&U[t]&&U[t].readOnly&&!_||e&&U[t]&&U[t].writeOnly&&!j||(e&&U[t]&&U[t].xml&&U[t].xml.attribute?f[U[t].xml.name||t]=o[t]:z(t,o[t])));return A()(f)||F[O].push({_attr:f}),F}return F[O]=A()(f)?o:[{_attr:f},o],F}if("object"===y){for(let e in U)Object.prototype.hasOwnProperty.call(U,e)&&(U[e]&&U[e].deprecated||U[e]&&U[e].readOnly&&!_||U[e]&&U[e].writeOnly&&!j||z(e));if(r&&f&&F[O].push({_attr:f}),W())return F;if(!0===x)r?F[O].push({additionalProp:"Anything can be here"}):F.additionalProp1={},V++;else if(x){const n=(0,C.mz)(x),o=B(n,t,void 0,r);if(r&&n.xml&&n.xml.name&&"notagname"!==n.xml.name)F[O].push(o);else{const t=null!==e.minProperties&&void 0!==e.minProperties&&VB(L(S,e,t),t,void 0,r)));else if(l()(S.oneOf)){var G;n=w()(G=S.oneOf).call(G,(e=>B(L(S,e,t),t,void 0,r)))}else{if(!(!r||r&&m.wrapped))return B(S,t,void 0,r);n=[B(S,t,void 0,r)]}return n=q(n),r&&m.wrapped?(F[O]=n,A()(f)||F[O].push({_attr:f}),F):n}let Z;if(e&&l()(e.enum))Z=(0,C.AF)(e.enum)[0];else{if(!e)return;if(Z=I(e),"number"==typeof Z){let t=e.minimum;null!=t&&(e.exclusiveMinimum&&t++,Z=t);let n=e.maximum;null!=n&&(e.exclusiveMaximum&&n--,Z=n)}if("string"==typeof Z&&(null!==e.maxLength&&void 0!==e.maxLength&&(Z=d()(Z).call(Z,0,e.maxLength)),null!==e.minLength&&void 0!==e.minLength)){let t=0;for(;Z.length(e.schema&&(e=e.schema),e.properties&&(e.type="object"),e),q=(e,t,n)=>{const r=B(e,t,n,!0);if(r)return"string"==typeof r?r:_()(r,{declaration:!0,indent:"\t"})},U=(e,t,n)=>B(e,t,n,!1),z=(e,t,n)=>[e,x()(t),x()(n)],V=(0,P.Z)(q,z),W=(0,P.Z)(U,z)},8883:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r=n(29812),o=n(72846),s=n(79431),i=n(81169),a=n(16132);const l=e=>{let{getSystem:t}=e;return{fn:{inferSchema:r.inferSchema,sampleFromSchema:r.sampleFromSchema,sampleFromSchemaGeneric:r.sampleFromSchemaGeneric,createXMLExample:r.createXMLExample,memoizedSampleFromSchema:r.memoizedSampleFromSchema,memoizedCreateXMLExample:r.memoizedCreateXMLExample,getJsonSampleSchema:(0,o.default)(t),getYamlSampleSchema:(0,s.default)(t),getXmlSampleSchema:(0,i.default)(t),getSampleSchema:(0,a.default)(t)}}}},51228:(e,t,n)=>{"use strict";n.r(t),n.d(t,{CLEAR_REQUEST:()=>ee,CLEAR_RESPONSE:()=>Q,CLEAR_VALIDATE_PARAMS:()=>te,LOG_REQUEST:()=>X,SET_MUTATED_REQUEST:()=>Y,SET_REQUEST:()=>Z,SET_RESPONSE:()=>G,SET_SCHEME:()=>se,UPDATE_EMPTY_PARAM_INCLUSION:()=>K,UPDATE_JSON:()=>W,UPDATE_OPERATION_META_VALUE:()=>ne,UPDATE_PARAM:()=>J,UPDATE_RESOLVED:()=>re,UPDATE_RESOLVED_SUBTREE:()=>oe,UPDATE_SPEC:()=>z,UPDATE_URL:()=>V,VALIDATE_PARAMS:()=>H,changeConsumesValue:()=>_e,changeParam:()=>ye,changeParamByIdentity:()=>ve,changeProducesValue:()=>je,clearRequest:()=>Te,clearResponse:()=>Ie,clearValidateParams:()=>Se,execute:()=>Ne,executeRequest:()=>Pe,invalidateResolvedSubtreeCache:()=>we,logRequest:()=>Ce,parseToJson:()=>pe,requestResolvedSubtree:()=>ge,resolveSpec:()=>fe,setMutatedRequest:()=>Ae,setRequest:()=>ke,setResponse:()=>Oe,setScheme:()=>Re,updateEmptyParamInclusion:()=>xe,updateJsonSpec:()=>ue,updateResolved:()=>le,updateResolvedSubtree:()=>be,updateSpec:()=>ae,updateUrl:()=>ce,validateParams:()=>Ee});var r=n(58309),o=n.n(r),s=n(97606),i=n.n(s),a=n(96718),l=n.n(a),c=n(24282),u=n.n(c),p=n(2250),h=n.n(p),f=n(6226),d=n.n(f),m=n(14418),g=n.n(m),y=n(3665),v=n.n(y),b=n(11882),w=n.n(b),E=n(86),x=n.n(E),S=n(28222),_=n.n(S),j=n(76986),O=n.n(j),k=n(70586),A=n.n(k),C=n(1272),P=n(43393),N=n(84564),I=n.n(N),T=n(7710),R=n(47037),M=n.n(R),D=n(23279),F=n.n(D),L=n(36968),B=n.n(L),$=n(72700),q=n.n($),U=n(90242);const z="spec_update_spec",V="spec_update_url",W="spec_update_json",J="spec_update_param",K="spec_update_empty_param_inclusion",H="spec_validate_param",G="spec_set_response",Z="spec_set_request",Y="spec_set_mutated_request",X="spec_log_request",Q="spec_clear_response",ee="spec_clear_request",te="spec_clear_validate_param",ne="spec_update_operation_meta_value",re="spec_update_resolved",oe="spec_update_resolved_subtree",se="set_scheme",ie=e=>M()(e)?e:"";function ae(e){const t=ie(e).replace(/\t/g," ");if("string"==typeof e)return{type:z,payload:t}}function le(e){return{type:re,payload:e}}function ce(e){return{type:V,payload:e}}function ue(e){return{type:W,payload:e}}const pe=e=>t=>{let{specActions:n,specSelectors:r,errActions:o}=t,{specStr:s}=r,i=null;try{e=e||s(),o.clear({source:"parser"}),i=C.ZP.load(e,{schema:C.A8})}catch(e){return console.error(e),o.newSpecErr({source:"parser",level:"error",message:e.reason,line:e.mark&&e.mark.line?e.mark.line+1:void 0})}return i&&"object"==typeof i?n.updateJsonSpec(i):{}};let he=!1;const fe=(e,t)=>n=>{let{specActions:r,specSelectors:s,errActions:a,fn:{fetch:c,resolve:u,AST:p={}},getConfigs:h}=n;he||(console.warn("specActions.resolveSpec is deprecated since v3.10.0 and will be removed in v4.0.0; use requestResolvedSubtree instead!"),he=!0);const{modelPropertyMacro:f,parameterMacro:d,requestInterceptor:m,responseInterceptor:g}=h();void 0===e&&(e=s.specJson()),void 0===t&&(t=s.url());let y=p.getLineNumberForPath?p.getLineNumberForPath:()=>{},v=s.specStr();return u({fetch:c,spec:e,baseDoc:t,modelPropertyMacro:f,parameterMacro:d,requestInterceptor:m,responseInterceptor:g}).then((e=>{let{spec:t,errors:n}=e;if(a.clear({type:"thrown"}),o()(n)&&n.length>0){let e=i()(n).call(n,(e=>(console.error(e),e.line=e.fullPath?y(v,e.fullPath):null,e.path=e.fullPath?e.fullPath.join("."):null,e.level="error",e.type="thrown",e.source="resolver",l()(e,"message",{enumerable:!0,value:e.message}),e)));a.newThrownErrBatch(e)}return r.updateResolved(t)}))};let de=[];const me=F()((async()=>{const e=de.system;if(!e)return void console.error("debResolveSubtrees: don't have a system to operate on, aborting.");const{errActions:t,errSelectors:n,fn:{resolveSubtree:r,fetch:s,AST:a={}},specSelectors:c,specActions:p}=e;if(!r)return void console.error("Error: Swagger-Client did not provide a `resolveSubtree` method, doing nothing.");let f=a.getLineNumberForPath?a.getLineNumberForPath:()=>{};const m=c.specStr(),{modelPropertyMacro:y,parameterMacro:b,requestInterceptor:w,responseInterceptor:E}=e.getConfigs();try{var x=await u()(de).call(de,(async(e,a)=>{let{resultMap:u,specWithCurrentSubtrees:p}=await e;const{errors:x,spec:S}=await r(p,a,{baseDoc:c.url(),modelPropertyMacro:y,parameterMacro:b,requestInterceptor:w,responseInterceptor:E});if(n.allErrors().size&&t.clearBy((e=>{var t;return"thrown"!==e.get("type")||"resolver"!==e.get("source")||!h()(t=e.get("fullPath")).call(t,((e,t)=>e===a[t]||void 0===a[t]))})),o()(x)&&x.length>0){let e=i()(x).call(x,(e=>(e.line=e.fullPath?f(m,e.fullPath):null,e.path=e.fullPath?e.fullPath.join("."):null,e.level="error",e.type="thrown",e.source="resolver",l()(e,"message",{enumerable:!0,value:e.message}),e)));t.newThrownErrBatch(e)}var _,j;S&&c.isOAS3()&&"components"===a[0]&&"securitySchemes"===a[1]&&await d().all(i()(_=g()(j=v()(S)).call(j,(e=>"openIdConnect"===e.type))).call(_,(async e=>{const t={url:e.openIdConnectUrl,requestInterceptor:w,responseInterceptor:E};try{const n=await s(t);n instanceof Error||n.status>=400?console.error(n.statusText+" "+t.url):e.openIdConnectData=JSON.parse(n.text)}catch(e){console.error(e)}})));return B()(u,a,S),p=q()(a,S,p),{resultMap:u,specWithCurrentSubtrees:p}}),d().resolve({resultMap:(c.specResolvedSubtree([])||(0,P.Map)()).toJS(),specWithCurrentSubtrees:c.specJS()}));delete de.system,de=[]}catch(e){console.error(e)}p.updateResolvedSubtree([],x.resultMap)}),35),ge=e=>t=>{var n;w()(n=i()(de).call(de,(e=>e.join("@@")))).call(n,e.join("@@"))>-1||(de.push(e),de.system=t,me())};function ye(e,t,n,r,o){return{type:J,payload:{path:e,value:r,paramName:t,paramIn:n,isXml:o}}}function ve(e,t,n,r){return{type:J,payload:{path:e,param:t,value:n,isXml:r}}}const be=(e,t)=>({type:oe,payload:{path:e,value:t}}),we=()=>({type:oe,payload:{path:[],value:(0,P.Map)()}}),Ee=(e,t)=>({type:H,payload:{pathMethod:e,isOAS3:t}}),xe=(e,t,n,r)=>({type:K,payload:{pathMethod:e,paramName:t,paramIn:n,includeEmptyValue:r}});function Se(e){return{type:te,payload:{pathMethod:e}}}function _e(e,t){return{type:ne,payload:{path:e,value:t,key:"consumes_value"}}}function je(e,t){return{type:ne,payload:{path:e,value:t,key:"produces_value"}}}const Oe=(e,t,n)=>({payload:{path:e,method:t,res:n},type:G}),ke=(e,t,n)=>({payload:{path:e,method:t,req:n},type:Z}),Ae=(e,t,n)=>({payload:{path:e,method:t,req:n},type:Y}),Ce=e=>({payload:e,type:X}),Pe=e=>t=>{let{fn:n,specActions:r,specSelectors:s,getConfigs:a,oas3Selectors:l}=t,{pathName:c,method:u,operation:p}=e,{requestInterceptor:h,responseInterceptor:f}=a(),d=p.toJS();var m,y;p&&p.get("parameters")&&x()(m=g()(y=p.get("parameters")).call(y,(e=>e&&!0===e.get("allowEmptyValue")))).call(m,(t=>{if(s.parameterInclusionSettingFor([c,u],t.get("name"),t.get("in"))){e.parameters=e.parameters||{};const n=(0,U.cz)(t,e.parameters);(!n||n&&0===n.size)&&(e.parameters[t.get("name")]="")}}));if(e.contextUrl=I()(s.url()).toString(),d&&d.operationId?e.operationId=d.operationId:d&&c&&u&&(e.operationId=n.opId(d,c,u)),s.isOAS3()){const t=`${c}:${u}`;e.server=l.selectedServer(t)||l.selectedServer();const n=l.serverVariables({server:e.server,namespace:t}).toJS(),r=l.serverVariables({server:e.server}).toJS();e.serverVariables=_()(n).length?n:r,e.requestContentType=l.requestContentType(c,u),e.responseContentType=l.responseContentType(c,u)||"*/*";const s=l.requestBodyValue(c,u),a=l.requestBodyInclusionSetting(c,u);var v;if(s&&s.toJS)e.requestBody=g()(v=i()(s).call(s,(e=>P.Map.isMap(e)?e.get("value"):e))).call(v,((e,t)=>(o()(e)?0!==e.length:!(0,U.O2)(e))||a.get(t))).toJS();else e.requestBody=s}let b=O()({},e);b=n.buildRequest(b),r.setRequest(e.pathName,e.method,b);e.requestInterceptor=async t=>{let n=await h.apply(void 0,[t]),o=O()({},n);return r.setMutatedRequest(e.pathName,e.method,o),n},e.responseInterceptor=f;const w=A()();return n.execute(e).then((t=>{t.duration=A()()-w,r.setResponse(e.pathName,e.method,t)})).catch((t=>{"Failed to fetch"===t.message&&(t.name="",t.message='**Failed to fetch.** \n**Possible Reasons:** \n - CORS \n - Network Failure \n - URL scheme must be "http" or "https" for CORS request.'),r.setResponse(e.pathName,e.method,{error:!0,err:(0,T.serializeError)(t)})}))},Ne=function(){let{path:e,method:t,...n}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r=>{let{fn:{fetch:o},specSelectors:s,specActions:i}=r,a=s.specJsonWithResolvedSubtrees().toJS(),l=s.operationScheme(e,t),{requestContentType:c,responseContentType:u}=s.contentTypeValues([e,t]).toJS(),p=/xml/i.test(c),h=s.parameterValues([e,t],p).toJS();return i.executeRequest({...n,fetch:o,spec:a,pathName:e,method:t,parameters:h,requestContentType:c,scheme:l,responseContentType:u})}};function Ie(e,t){return{type:Q,payload:{path:e,method:t}}}function Te(e,t){return{type:ee,payload:{path:e,method:t}}}function Re(e,t,n){return{type:se,payload:{scheme:e,path:t,method:n}}}},37038:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(20032),o=n(51228),s=n(33881),i=n(77508);function a(){return{statePlugins:{spec:{wrapActions:i,reducers:r.default,actions:o,selectors:s}}}}},20032:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>d});var r=n(24282),o=n.n(r),s=n(97606),i=n.n(s),a=n(76986),l=n.n(a),c=n(43393),u=n(90242),p=n(27504),h=n(33881),f=n(51228);const d={[f.UPDATE_SPEC]:(e,t)=>"string"==typeof t.payload?e.set("spec",t.payload):e,[f.UPDATE_URL]:(e,t)=>e.set("url",t.payload+""),[f.UPDATE_JSON]:(e,t)=>e.set("json",(0,u.oG)(t.payload)),[f.UPDATE_RESOLVED]:(e,t)=>e.setIn(["resolved"],(0,u.oG)(t.payload)),[f.UPDATE_RESOLVED_SUBTREE]:(e,t)=>{const{value:n,path:r}=t.payload;return e.setIn(["resolvedSubtrees",...r],(0,u.oG)(n))},[f.UPDATE_PARAM]:(e,t)=>{let{payload:n}=t,{path:r,paramName:o,paramIn:s,param:i,value:a,isXml:l}=n,c=i?(0,u.V9)(i):`${s}.${o}`;const p=l?"value_xml":"value";return e.setIn(["meta","paths",...r,"parameters",c,p],a)},[f.UPDATE_EMPTY_PARAM_INCLUSION]:(e,t)=>{let{payload:n}=t,{pathMethod:r,paramName:o,paramIn:s,includeEmptyValue:i}=n;if(!o||!s)return console.warn("Warning: UPDATE_EMPTY_PARAM_INCLUSION could not generate a paramKey."),e;const a=`${s}.${o}`;return e.setIn(["meta","paths",...r,"parameter_inclusions",a],i)},[f.VALIDATE_PARAMS]:(e,t)=>{let{payload:{pathMethod:n,isOAS3:r}}=t;const s=(0,h.specJsonWithResolvedSubtrees)(e).getIn(["paths",...n]),i=(0,h.parameterValues)(e,n).toJS();return e.updateIn(["meta","paths",...n,"parameters"],(0,c.fromJS)({}),(t=>{var a;return o()(a=s.get("parameters",(0,c.List)())).call(a,((t,o)=>{const s=(0,u.cz)(o,i),a=(0,h.parameterInclusionSettingFor)(e,n,o.get("name"),o.get("in")),l=(0,u.Ik)(o,s,{bypassRequiredCheck:a,isOAS3:r});return t.setIn([(0,u.V9)(o),"errors"],(0,c.fromJS)(l))}),t)}))},[f.CLEAR_VALIDATE_PARAMS]:(e,t)=>{let{payload:{pathMethod:n}}=t;return e.updateIn(["meta","paths",...n,"parameters"],(0,c.fromJS)([]),(e=>i()(e).call(e,(e=>e.set("errors",(0,c.fromJS)([]))))))},[f.SET_RESPONSE]:(e,t)=>{let n,{payload:{res:r,path:o,method:s}}=t;n=r.error?l()({error:!0,name:r.err.name,message:r.err.message,statusCode:r.err.statusCode},r.err.response):r,n.headers=n.headers||{};let i=e.setIn(["responses",o,s],(0,u.oG)(n));return p.Z.Blob&&r.data instanceof p.Z.Blob&&(i=i.setIn(["responses",o,s,"text"],r.data)),i},[f.SET_REQUEST]:(e,t)=>{let{payload:{req:n,path:r,method:o}}=t;return e.setIn(["requests",r,o],(0,u.oG)(n))},[f.SET_MUTATED_REQUEST]:(e,t)=>{let{payload:{req:n,path:r,method:o}}=t;return e.setIn(["mutatedRequests",r,o],(0,u.oG)(n))},[f.UPDATE_OPERATION_META_VALUE]:(e,t)=>{let{payload:{path:n,value:r,key:o}}=t,s=["paths",...n],i=["meta","paths",...n];return e.getIn(["json",...s])||e.getIn(["resolved",...s])||e.getIn(["resolvedSubtrees",...s])?e.setIn([...i,o],(0,c.fromJS)(r)):e},[f.CLEAR_RESPONSE]:(e,t)=>{let{payload:{path:n,method:r}}=t;return e.deleteIn(["responses",n,r])},[f.CLEAR_REQUEST]:(e,t)=>{let{payload:{path:n,method:r}}=t;return e.deleteIn(["requests",n,r])},[f.SET_SCHEME]:(e,t)=>{let{payload:{scheme:n,path:r,method:o}}=t;return r&&o?e.setIn(["scheme",r,o],n):r||o?void 0:e.setIn(["scheme","_defaultScheme"],n)}}},33881:(e,t,n)=>{"use strict";n.r(t),n.d(t,{allowTryItOutFor:()=>fe,basePath:()=>Q,canExecuteScheme:()=>Ae,consumes:()=>K,consumesOptionsFor:()=>Oe,contentTypeValues:()=>Se,currentProducesFor:()=>_e,definitions:()=>X,externalDocs:()=>q,findDefinition:()=>Y,getOAS3RequiredRequestBodyContentType:()=>Ne,getParameter:()=>ve,hasHost:()=>be,host:()=>ee,info:()=>$,isMediaTypeSchemaPropertiesEqual:()=>Ie,isOAS3:()=>B,lastError:()=>A,mutatedRequestFor:()=>he,mutatedRequests:()=>ce,operationScheme:()=>ke,operationWithMeta:()=>ye,operations:()=>J,operationsWithRootInherited:()=>ne,operationsWithTags:()=>se,parameterInclusionSettingFor:()=>me,parameterValues:()=>we,parameterWithMeta:()=>ge,parameterWithMetaByIdentity:()=>de,parametersIncludeIn:()=>Ee,parametersIncludeType:()=>xe,paths:()=>V,produces:()=>H,producesOptionsFor:()=>je,requestFor:()=>pe,requests:()=>le,responseFor:()=>ue,responses:()=>ae,schemes:()=>te,security:()=>G,securityDefinitions:()=>Z,semver:()=>z,spec:()=>L,specJS:()=>T,specJson:()=>I,specJsonWithResolvedSubtrees:()=>F,specResolved:()=>R,specResolvedSubtree:()=>M,specSource:()=>N,specStr:()=>P,tagDetails:()=>oe,taggedOperations:()=>ie,tags:()=>re,url:()=>C,validOperationMethods:()=>W,validateBeforeExecute:()=>Pe,validationErrors:()=>Ce,version:()=>U});var r=n(24278),o=n.n(r),s=n(86),i=n.n(s),a=n(11882),l=n.n(a),c=n(97606),u=n.n(c),p=n(14418),h=n.n(p),f=n(51679),d=n.n(f),m=n(24282),g=n.n(m),y=n(2578),v=n.n(y),b=n(92039),w=n.n(b),E=n(58309),x=n.n(E),S=n(20573),_=n(90242),j=n(43393);const O=["get","put","post","delete","options","head","patch","trace"],k=e=>e||(0,j.Map)(),A=(0,S.P1)(k,(e=>e.get("lastError"))),C=(0,S.P1)(k,(e=>e.get("url"))),P=(0,S.P1)(k,(e=>e.get("spec")||"")),N=(0,S.P1)(k,(e=>e.get("specSource")||"not-editor")),I=(0,S.P1)(k,(e=>e.get("json",(0,j.Map)()))),T=(0,S.P1)(I,(e=>e.toJS())),R=(0,S.P1)(k,(e=>e.get("resolved",(0,j.Map)()))),M=(e,t)=>e.getIn(["resolvedSubtrees",...t],void 0),D=(e,t)=>j.Map.isMap(e)&&j.Map.isMap(t)?t.get("$$ref")?t:(0,j.OrderedMap)().mergeWith(D,e,t):t,F=(0,S.P1)(k,(e=>(0,j.OrderedMap)().mergeWith(D,e.get("json"),e.get("resolvedSubtrees")))),L=e=>I(e),B=(0,S.P1)(L,(()=>!1)),$=(0,S.P1)(L,(e=>Te(e&&e.get("info")))),q=(0,S.P1)(L,(e=>Te(e&&e.get("externalDocs")))),U=(0,S.P1)($,(e=>e&&e.get("version"))),z=(0,S.P1)(U,(e=>{var t;return o()(t=/v?([0-9]*)\.([0-9]*)\.([0-9]*)/i.exec(e)).call(t,1)})),V=(0,S.P1)(F,(e=>e.get("paths"))),W=(0,S.P1)((()=>["get","put","post","delete","options","head","patch"])),J=(0,S.P1)(V,(e=>{if(!e||e.size<1)return(0,j.List)();let t=(0,j.List)();return e&&i()(e)?(i()(e).call(e,((e,n)=>{if(!e||!i()(e))return{};i()(e).call(e,((e,r)=>{l()(O).call(O,r)<0||(t=t.push((0,j.fromJS)({path:n,method:r,operation:e,id:`${r}-${n}`})))}))})),t):(0,j.List)()})),K=(0,S.P1)(L,(e=>(0,j.Set)(e.get("consumes")))),H=(0,S.P1)(L,(e=>(0,j.Set)(e.get("produces")))),G=(0,S.P1)(L,(e=>e.get("security",(0,j.List)()))),Z=(0,S.P1)(L,(e=>e.get("securityDefinitions"))),Y=(e,t)=>{const n=e.getIn(["resolvedSubtrees","definitions",t],null),r=e.getIn(["json","definitions",t],null);return n||r||null},X=(0,S.P1)(L,(e=>{const t=e.get("definitions");return j.Map.isMap(t)?t:(0,j.Map)()})),Q=(0,S.P1)(L,(e=>e.get("basePath"))),ee=(0,S.P1)(L,(e=>e.get("host"))),te=(0,S.P1)(L,(e=>e.get("schemes",(0,j.Map)()))),ne=(0,S.P1)(J,K,H,((e,t,n)=>u()(e).call(e,(e=>e.update("operation",(e=>{if(e){if(!j.Map.isMap(e))return;return e.withMutations((e=>(e.get("consumes")||e.update("consumes",(e=>(0,j.Set)(e).merge(t))),e.get("produces")||e.update("produces",(e=>(0,j.Set)(e).merge(n))),e)))}return(0,j.Map)()})))))),re=(0,S.P1)(L,(e=>{const t=e.get("tags",(0,j.List)());return j.List.isList(t)?h()(t).call(t,(e=>j.Map.isMap(e))):(0,j.List)()})),oe=(e,t)=>{var n;let r=re(e)||(0,j.List)();return d()(n=h()(r).call(r,j.Map.isMap)).call(n,(e=>e.get("name")===t),(0,j.Map)())},se=(0,S.P1)(ne,re,((e,t)=>g()(e).call(e,((e,t)=>{let n=(0,j.Set)(t.getIn(["operation","tags"]));return n.count()<1?e.update("default",(0,j.List)(),(e=>e.push(t))):g()(n).call(n,((e,n)=>e.update(n,(0,j.List)(),(e=>e.push(t)))),e)}),g()(t).call(t,((e,t)=>e.set(t.get("name"),(0,j.List)())),(0,j.OrderedMap)())))),ie=e=>t=>{var n;let{getConfigs:r}=t,{tagsSorter:o,operationsSorter:s}=r();return u()(n=se(e).sortBy(((e,t)=>t),((e,t)=>{let n="function"==typeof o?o:_.wh.tagsSorter[o];return n?n(e,t):null}))).call(n,((t,n)=>{let r="function"==typeof s?s:_.wh.operationsSorter[s],o=r?v()(t).call(t,r):t;return(0,j.Map)({tagDetails:oe(e,n),operations:o})}))},ae=(0,S.P1)(k,(e=>e.get("responses",(0,j.Map)()))),le=(0,S.P1)(k,(e=>e.get("requests",(0,j.Map)()))),ce=(0,S.P1)(k,(e=>e.get("mutatedRequests",(0,j.Map)()))),ue=(e,t,n)=>ae(e).getIn([t,n],null),pe=(e,t,n)=>le(e).getIn([t,n],null),he=(e,t,n)=>ce(e).getIn([t,n],null),fe=()=>!0,de=(e,t,n)=>{const r=F(e).getIn(["paths",...t,"parameters"],(0,j.OrderedMap)()),o=e.getIn(["meta","paths",...t,"parameters"],(0,j.OrderedMap)()),s=u()(r).call(r,(e=>{const t=o.get(`${n.get("in")}.${n.get("name")}`),r=o.get(`${n.get("in")}.${n.get("name")}.hash-${n.hashCode()}`);return(0,j.OrderedMap)().merge(e,t,r)}));return d()(s).call(s,(e=>e.get("in")===n.get("in")&&e.get("name")===n.get("name")),(0,j.OrderedMap)())},me=(e,t,n,r)=>{const o=`${r}.${n}`;return e.getIn(["meta","paths",...t,"parameter_inclusions",o],!1)},ge=(e,t,n,r)=>{const o=F(e).getIn(["paths",...t,"parameters"],(0,j.OrderedMap)()),s=d()(o).call(o,(e=>e.get("in")===r&&e.get("name")===n),(0,j.OrderedMap)());return de(e,t,s)},ye=(e,t,n)=>{var r;const o=F(e).getIn(["paths",t,n],(0,j.OrderedMap)()),s=e.getIn(["meta","paths",t,n],(0,j.OrderedMap)()),i=u()(r=o.get("parameters",(0,j.List)())).call(r,(r=>de(e,[t,n],r)));return(0,j.OrderedMap)().merge(o,s).set("parameters",i)};function ve(e,t,n,r){t=t||[];let o=e.getIn(["meta","paths",...t,"parameters"],(0,j.fromJS)([]));return d()(o).call(o,(e=>j.Map.isMap(e)&&e.get("name")===n&&e.get("in")===r))||(0,j.Map)()}const be=(0,S.P1)(L,(e=>{const t=e.get("host");return"string"==typeof t&&t.length>0&&"/"!==t[0]}));function we(e,t,n){t=t||[];let r=ye(e,...t).get("parameters",(0,j.List)());return g()(r).call(r,((e,t)=>{let r=n&&"body"===t.get("in")?t.get("value_xml"):t.get("value");return e.set((0,_.V9)(t,{allowHashes:!1}),r)}),(0,j.fromJS)({}))}function Ee(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(j.List.isList(e))return w()(e).call(e,(e=>j.Map.isMap(e)&&e.get("in")===t))}function xe(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(j.List.isList(e))return w()(e).call(e,(e=>j.Map.isMap(e)&&e.get("type")===t))}function Se(e,t){t=t||[];let n=F(e).getIn(["paths",...t],(0,j.fromJS)({})),r=e.getIn(["meta","paths",...t],(0,j.fromJS)({})),o=_e(e,t);const s=n.get("parameters")||new j.List,i=r.get("consumes_value")?r.get("consumes_value"):xe(s,"file")?"multipart/form-data":xe(s,"formData")?"application/x-www-form-urlencoded":void 0;return(0,j.fromJS)({requestContentType:i,responseContentType:o})}function _e(e,t){t=t||[];const n=F(e).getIn(["paths",...t],null);if(null===n)return;const r=e.getIn(["meta","paths",...t,"produces_value"],null),o=n.getIn(["produces",0],null);return r||o||"application/json"}function je(e,t){t=t||[];const n=F(e),r=n.getIn(["paths",...t],null);if(null===r)return;const[o]=t,s=r.get("produces",null),i=n.getIn(["paths",o,"produces"],null),a=n.getIn(["produces"],null);return s||i||a}function Oe(e,t){t=t||[];const n=F(e),r=n.getIn(["paths",...t],null);if(null===r)return;const[o]=t,s=r.get("consumes",null),i=n.getIn(["paths",o,"consumes"],null),a=n.getIn(["consumes"],null);return s||i||a}const ke=(e,t,n)=>{let r=e.get("url").match(/^([a-z][a-z0-9+\-.]*):/),o=x()(r)?r[1]:null;return e.getIn(["scheme",t,n])||e.getIn(["scheme","_defaultScheme"])||o||""},Ae=(e,t,n)=>{var r;return l()(r=["http","https"]).call(r,ke(e,t,n))>-1},Ce=(e,t)=>{t=t||[];let n=e.getIn(["meta","paths",...t,"parameters"],(0,j.fromJS)([]));const r=[];return i()(n).call(n,(e=>{let t=e.get("errors");t&&t.count()&&i()(t).call(t,(e=>r.push(e)))})),r},Pe=(e,t)=>0===Ce(e,t).length,Ne=(e,t)=>{var n;let r={requestBody:!1,requestContentType:{}},o=e.getIn(["resolvedSubtrees","paths",...t,"requestBody"],(0,j.fromJS)([]));return o.size<1||(o.getIn(["required"])&&(r.requestBody=o.getIn(["required"])),i()(n=o.getIn(["content"]).entrySeq()).call(n,(e=>{const t=e[0];if(e[1].getIn(["schema","required"])){const n=e[1].getIn(["schema","required"]).toJS();r.requestContentType[t]=n}}))),r},Ie=(e,t,n,r)=>{if((n||r)&&n===r)return!0;let o=e.getIn(["resolvedSubtrees","paths",...t,"requestBody","content"],(0,j.fromJS)([]));if(o.size<2||!n||!r)return!1;let s=o.getIn([n,"schema","properties"],(0,j.fromJS)([])),i=o.getIn([r,"schema","properties"],(0,j.fromJS)([]));return!!s.equals(i)};function Te(e){return j.Map.isMap(e)?e:new j.Map}},77508:(e,t,n)=>{"use strict";n.r(t),n.d(t,{executeRequest:()=>p,updateJsonSpec:()=>u,updateSpec:()=>c,validateParams:()=>h});var r=n(28222),o=n.n(r),s=n(86),i=n.n(s),a=n(27361),l=n.n(a);const c=(e,t)=>{let{specActions:n}=t;return function(){e(...arguments),n.parseToJson(...arguments)}},u=(e,t)=>{let{specActions:n}=t;return function(){for(var t=arguments.length,r=new Array(t),s=0;s{l()(c,[e]).$ref&&n.requestResolvedSubtree(["paths",e])})),n.requestResolvedSubtree(["components","securitySchemes"])}},p=(e,t)=>{let{specActions:n}=t;return t=>(n.logRequest(t),e(t))},h=(e,t)=>{let{specSelectors:n}=t;return t=>e(t,n.isOAS3())}},34852:(e,t,n)=>{"use strict";n.r(t),n.d(t,{loaded:()=>r});const r=(e,t)=>function(){e(...arguments);const n=t.getConfigs().withCredentials;void 0!==n&&(t.fn.fetch.withCredentials="string"==typeof n?"true"===n:!!n)}},79934:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>BE});var r={};n.r(r),n.d(r,{JsonPatchError:()=>j,_areEquals:()=>M,applyOperation:()=>P,applyPatch:()=>N,applyReducer:()=>I,deepClone:()=>O,getValueByPointer:()=>C,validate:()=>R,validator:()=>T});var o={};n.r(o),n.d(o,{compare:()=>z,generate:()=>q,observe:()=>$,unobserve:()=>B});var s={};n.r(s),n.d(s,{hasElementSourceMap:()=>Cs,includesClasses:()=>Ns,includesSymbols:()=>Ps,isAnnotationElement:()=>_s,isArrayElement:()=>ws,isBooleanElement:()=>vs,isCommentElement:()=>js,isElement:()=>ds,isLinkElement:()=>xs,isMemberElement:()=>Es,isNullElement:()=>ys,isNumberElement:()=>gs,isObjectElement:()=>bs,isParseResultElement:()=>Os,isPrimitiveElement:()=>As,isRefElement:()=>Ss,isSourceMapElement:()=>ks,isStringElement:()=>ms});var i={};n.r(i),n.d(i,{isJSONReferenceElement:()=>cc,isJSONSchemaElement:()=>lc,isLinkDescriptionElement:()=>pc,isMediaElement:()=>uc});var a={};n.r(a),n.d(a,{isOpenApi3_0LikeElement:()=>$c,isOpenApiExtension:()=>Kc,isParameterLikeElement:()=>qc,isReferenceLikeElement:()=>Uc,isRequestBodyLikeElement:()=>zc,isResponseLikeElement:()=>Vc,isServerLikeElement:()=>Wc,isTagLikeElement:()=>Jc});var l={};n.r(l),n.d(l,{isBooleanJsonSchemaElement:()=>ap,isCallbackElement:()=>Lu,isComponentsElement:()=>Bu,isContactElement:()=>$u,isExampleElement:()=>qu,isExternalDocumentationElement:()=>Uu,isHeaderElement:()=>zu,isInfoElement:()=>Vu,isLicenseElement:()=>Wu,isLinkElement:()=>Ju,isLinkElementExternal:()=>Ku,isMediaTypeElement:()=>pp,isOpenApi3_0Element:()=>Gu,isOpenapiElement:()=>Hu,isOperationElement:()=>Zu,isParameterElement:()=>Yu,isPathItemElement:()=>Xu,isPathItemElementExternal:()=>Qu,isPathsElement:()=>ep,isReferenceElement:()=>tp,isReferenceElementExternal:()=>np,isRequestBodyElement:()=>rp,isResponseElement:()=>op,isResponsesElement:()=>sp,isSchemaElement:()=>ip,isSecurityRequirementElement:()=>lp,isServerElement:()=>cp,isServerVariableElement:()=>up});var c={};n.r(c),n.d(c,{isBooleanJsonSchemaElement:()=>Kg,isCallbackElement:()=>Sg,isComponentsElement:()=>_g,isContactElement:()=>jg,isExampleElement:()=>Og,isExternalDocumentationElement:()=>kg,isHeaderElement:()=>Ag,isInfoElement:()=>Cg,isJsonSchemaDialectElement:()=>Pg,isLicenseElement:()=>Ng,isLinkElement:()=>Ig,isLinkElementExternal:()=>Tg,isMediaTypeElement:()=>Yg,isOpenApi3_1Element:()=>Mg,isOpenapiElement:()=>Rg,isOperationElement:()=>Dg,isParameterElement:()=>Fg,isPathItemElement:()=>Lg,isPathItemElementExternal:()=>Bg,isPathsElement:()=>$g,isReferenceElement:()=>qg,isReferenceElementExternal:()=>Ug,isRequestBodyElement:()=>zg,isResponseElement:()=>Vg,isResponsesElement:()=>Wg,isSchemaElement:()=>Jg,isSecurityRequirementElement:()=>Hg,isServerElement:()=>Gg,isServerVariableElement:()=>Zg});var u={};n.r(u),n.d(u,{cookie:()=>EE,header:()=>wE,path:()=>yE,query:()=>vE});var p,h=n(58826),f=n.n(h),d=(p=function(e,t){return p=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},p(e,t)},function(e,t){function n(){this.constructor=e}p(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),m=Object.prototype.hasOwnProperty;function g(e,t){return m.call(e,t)}function y(e){if(Array.isArray(e)){for(var t=new Array(e.length),n=0;n=48&&t<=57))return!1;n++}return!0}function w(e){return-1===e.indexOf("/")&&-1===e.indexOf("~")?e:e.replace(/~/g,"~0").replace(/\//g,"~1")}function E(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function x(e){if(void 0===e)return!0;if(e)if(Array.isArray(e)){for(var t=0,n=e.length;t0&&"constructor"==a[c-1]))throw new TypeError("JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(n&&void 0===p&&(void 0===l[h]?p=a.slice(0,c).join("/"):c==u-1&&(p=t.path),void 0!==p&&f(t,0,e,p)),c++,Array.isArray(l)){if("-"===h)h=l.length;else{if(n&&!b(h))throw new j("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index","OPERATION_PATH_ILLEGAL_ARRAY_INDEX",s,t,e);b(h)&&(h=~~h)}if(c>=u){if(n&&"add"===t.op&&h>l.length)throw new j("The specified index MUST NOT be greater than the number of elements in the array","OPERATION_VALUE_OUT_OF_BOUNDS",s,t,e);if(!1===(i=A[t.op].call(t,l,h,e)).test)throw new j("Test operation failed","TEST_OPERATION_FAILED",s,t,e);return i}}else if(c>=u){if(!1===(i=k[t.op].call(t,l,h,e)).test)throw new j("Test operation failed","TEST_OPERATION_FAILED",s,t,e);return i}if(l=l[h],n&&c0)throw new j('Operation `path` property must start with "/"',"OPERATION_PATH_INVALID",t,e,n);if(("move"===e.op||"copy"===e.op)&&"string"!=typeof e.from)throw new j("Operation `from` property is not present (applicable in `move` and `copy` operations)","OPERATION_FROM_REQUIRED",t,e,n);if(("add"===e.op||"replace"===e.op||"test"===e.op)&&void 0===e.value)throw new j("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_REQUIRED",t,e,n);if(("add"===e.op||"replace"===e.op||"test"===e.op)&&x(e.value))throw new j("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED",t,e,n);if(n)if("add"==e.op){var o=e.path.split("/").length,s=r.split("/").length;if(o!==s+1&&o!==s)throw new j("Cannot perform an `add` operation at the desired path","OPERATION_PATH_CANNOT_ADD",t,e,n)}else if("replace"===e.op||"remove"===e.op||"_get"===e.op){if(e.path!==r)throw new j("Cannot perform the operation at a path that does not exist","OPERATION_PATH_UNRESOLVABLE",t,e,n)}else if("move"===e.op||"copy"===e.op){var i=R([{op:"_get",path:e.from,value:void 0}],n);if(i&&"OPERATION_PATH_UNRESOLVABLE"===i.name)throw new j("Cannot perform the operation from a path that does not exist","OPERATION_FROM_UNRESOLVABLE",t,e,n)}}function R(e,t,n){try{if(!Array.isArray(e))throw new j("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");if(t)N(v(t),v(e),n||!0);else{n=n||T;for(var r=0;r0&&(e.patches=[],e.callback&&e.callback(r)),r}function U(e,t,n,r,o){if(t!==e){"function"==typeof t.toJSON&&(t=t.toJSON());for(var s=y(t),i=y(e),a=!1,l=i.length-1;l>=0;l--){var c=e[p=i[l]];if(!g(t,p)||void 0===t[p]&&void 0!==c&&!1===Array.isArray(t))Array.isArray(e)===Array.isArray(t)?(o&&n.push({op:"test",path:r+"/"+w(p),value:v(c)}),n.push({op:"remove",path:r+"/"+w(p)}),a=!0):(o&&n.push({op:"test",path:r,value:e}),n.push({op:"replace",path:r,value:t}),!0);else{var u=t[p];"object"==typeof c&&null!=c&&"object"==typeof u&&null!=u&&Array.isArray(c)===Array.isArray(u)?U(c,u,n,r+"/"+w(p),o):c!==u&&(!0,o&&n.push({op:"test",path:r+"/"+w(p),value:v(c)}),n.push({op:"replace",path:r+"/"+w(p),value:v(u)}))}}if(a||s.length!=i.length)for(l=0;lvoid 0!==t&&e?e[t]:e),e)},applyPatch:function(e,t,n){if(n=n||{},"merge"===(t=f()(f()({},t),{},{path:t.path&&K(t.path)})).op){const n=ae(e,t.path);Object.assign(n,t.value),N(e,[H(t.path,n)])}else if("mergeDeep"===t.op){const n=ae(e,t.path),r=W()(n,t.value);e=N(e,[H(t.path,r)]).newDocument}else if("add"===t.op&&""===t.path&&te(t.value)){N(e,Object.keys(t.value).reduce(((e,n)=>(e.push({op:"add",path:`/${K(n)}`,value:t.value[n]}),e)),[]))}else if("replace"===t.op&&""===t.path){let{value:r}=t;n.allowMetaPatches&&t.meta&&se(t)&&(Array.isArray(t.value)||te(t.value))&&(r=f()(f()({},r),t.meta)),e=r}else if(N(e,[t]),n.allowMetaPatches&&t.meta&&se(t)&&(Array.isArray(t.value)||te(t.value))){const n=ae(e,t.path),r=f()(f()({},n),t.meta);N(e,[H(t.path,r)])}return e},parentPathMatch:function(e,t){if(!Array.isArray(t))return!1;for(let n=0,r=t.length;n(e+"").replace(/~/g,"~0").replace(/\//g,"~1"))).join("/")}`:e}function H(e,t,n){return{op:"replace",path:e,value:t,meta:n}}function G(e,t,n){return ee(Q(e.filter(se).map((e=>t(e.value,n,e.path)))||[]))}function Z(e,t,n){return n=n||[],Array.isArray(e)?e.map(((e,r)=>Z(e,t,n.concat(r)))):te(e)?Object.keys(e).map((r=>Z(e[r],t,n.concat(r)))):t(e,n[n.length-1],n)}function Y(e,t,n){let r=[];if((n=n||[]).length>0){const o=t(e,n[n.length-1],n);o&&(r=r.concat(o))}if(Array.isArray(e)){const o=e.map(((e,r)=>Y(e,t,n.concat(r))));o&&(r=r.concat(o))}else if(te(e)){const o=Object.keys(e).map((r=>Y(e[r],t,n.concat(r))));o&&(r=r.concat(o))}return r=Q(r),r}function X(e){return Array.isArray(e)?e:[e]}function Q(e){return[].concat(...e.map((e=>Array.isArray(e)?Q(e):e)))}function ee(e){return e.filter((e=>void 0!==e))}function te(e){return e&&"object"==typeof e}function ne(e){return e&&"function"==typeof e}function re(e){if(ie(e)){const{op:t}=e;return"add"===t||"remove"===t||"replace"===t}return!1}function oe(e){return re(e)||ie(e)&&"mutation"===e.type}function se(e){return oe(e)&&("add"===e.op||"replace"===e.op||"merge"===e.op||"mergeDeep"===e.op)}function ie(e){return e&&"object"==typeof e}function ae(e,t){try{return C(e,t)}catch(e){return console.error(e),{}}}n(31905);var le=n(1272),ce=n(8575);function ue(e,t){function n(){Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack;for(var e=arguments.length,n=new Array(e),r=0;r-1&&-1===de.indexOf(n)||me.indexOf(r)>-1||ge.some((e=>r.indexOf(e)>-1))}function ve(e,t){const[n,r]=e.split("#"),o=ce.resolve(n||"",t||"");return r?`${o}#${r}`:o}const be="application/json, application/yaml",we=/^([a-z]+:\/\/|\/\/)/i,Ee=ue("JSONRefError",(function(e,t,n){this.originalError=n,Object.assign(this,t||{})})),xe={},Se=new WeakMap,_e=[e=>"paths"===e[0]&&"responses"===e[3]&&"examples"===e[5],e=>"paths"===e[0]&&"responses"===e[3]&&"content"===e[5]&&"example"===e[7],e=>"paths"===e[0]&&"responses"===e[3]&&"content"===e[5]&&"examples"===e[7]&&"value"===e[9],e=>"paths"===e[0]&&"requestBody"===e[3]&&"content"===e[4]&&"example"===e[6],e=>"paths"===e[0]&&"requestBody"===e[3]&&"content"===e[4]&&"examples"===e[6]&&"value"===e[8],e=>"paths"===e[0]&&"parameters"===e[2]&&"example"===e[4],e=>"paths"===e[0]&&"parameters"===e[3]&&"example"===e[5],e=>"paths"===e[0]&&"parameters"===e[2]&&"examples"===e[4]&&"value"===e[6],e=>"paths"===e[0]&&"parameters"===e[3]&&"examples"===e[5]&&"value"===e[7],e=>"paths"===e[0]&&"parameters"===e[2]&&"content"===e[4]&&"example"===e[6],e=>"paths"===e[0]&&"parameters"===e[2]&&"content"===e[4]&&"examples"===e[6]&&"value"===e[8],e=>"paths"===e[0]&&"parameters"===e[3]&&"content"===e[4]&&"example"===e[7],e=>"paths"===e[0]&&"parameters"===e[3]&&"content"===e[5]&&"examples"===e[7]&&"value"===e[9]],je={key:"$ref",plugin:(e,t,n,r)=>{const o=r.getInstance(),s=n.slice(0,-1);if(ye(s)||(e=>_e.some((t=>t(e))))(s))return;const{baseDoc:i}=r.getContext(n);if("string"!=typeof e)return new Ee("$ref: must be a string (JSON-Ref)",{$ref:e,baseDoc:i,fullPath:n});const a=Pe(e),l=a[0],c=a[1]||"";let u,p,h;try{u=i||l?Ae(l,i):null}catch(t){return Ce(t,{pointer:c,$ref:e,basePath:u,fullPath:n})}if(function(e,t,n,r){let o=Se.get(r);o||(o={},Se.set(r,o));const s=function(e){if(0===e.length)return"";return`/${e.map(De).join("/")}`}(n),i=`${t||""}#${e}`,a=s.replace(/allOf\/\d+\/?/g,""),l=r.contextTree.get([]).baseDoc;if(t===l&&Le(a,e))return!0;let c="";const u=n.some((e=>(c=`${c}/${De(e)}`,o[c]&&o[c].some((e=>Le(e,i)||Le(i,e))))));if(u)return!0;return void(o[a]=(o[a]||[]).concat(i))}(c,u,s,r)&&!o.useCircularStructures){const t=ve(e,u);return e===t?null:J.replace(n,t)}if(null==u?(h=Re(c),p=r.get(h),void 0===p&&(p=new Ee(`Could not resolve reference: ${e}`,{pointer:c,$ref:e,baseDoc:i,fullPath:n}))):(p=Ne(u,c),p=null!=p.__value?p.__value:p.catch((t=>{throw Ce(t,{pointer:c,$ref:e,baseDoc:i,fullPath:n})}))),p instanceof Error)return[J.remove(n),p];const f=ve(e,u),d=J.replace(s,p,{$$ref:f});if(u&&u!==i)return[d,J.context(s,{baseDoc:u})];try{if(!function(e,t){const n=[e];return t.path.reduce(((e,t)=>(n.push(e[t]),e[t])),e),r(t.value);function r(e){return J.isObject(e)&&(n.indexOf(e)>=0||Object.keys(e).some((t=>r(e[t]))))}}(r.state,d)||o.useCircularStructures)return d}catch(e){return null}}},Oe=Object.assign(je,{docCache:xe,absoluteify:Ae,clearCache:function(e){void 0!==e?delete xe[e]:Object.keys(xe).forEach((e=>{delete xe[e]}))},JSONRefError:Ee,wrapError:Ce,getDoc:Ie,split:Pe,extractFromDoc:Ne,fetchJSON:function(e){return fetch(e,{headers:{Accept:be},loadSpec:!0}).then((e=>e.text())).then((e=>le.ZP.load(e)))},extract:Te,jsonPointerToArray:Re,unescapeJsonPointerToken:Me}),ke=Oe;function Ae(e,t){if(!we.test(e)){if(!t)throw new Ee(`Tried to resolve a relative URL, without having a basePath. path: '${e}' basePath: '${t}'`);return ce.resolve(t,e)}return e}function Ce(e,t){let n;return n=e&&e.response&&e.response.body?`${e.response.body.code} ${e.response.body.message}`:e.message,new Ee(`Could not resolve reference: ${n}`,t,e)}function Pe(e){return(e+"").split("#")}function Ne(e,t){const n=xe[e];if(n&&!J.isPromise(n))try{const e=Te(t,n);return Object.assign(Promise.resolve(e),{__value:e})}catch(e){return Promise.reject(e)}return Ie(e).then((e=>Te(t,e)))}function Ie(e){const t=xe[e];return t?J.isPromise(t)?t:Promise.resolve(t):(xe[e]=Oe.fetchJSON(e).then((t=>(xe[e]=t,t))),xe[e])}function Te(e,t){const n=Re(e);if(n.length<1)return t;const r=J.getIn(t,n);if(void 0===r)throw new Ee(`Could not resolve pointer: ${e} does not exist in document`,{pointer:e});return r}function Re(e){if("string"!=typeof e)throw new TypeError("Expected a string, got a "+typeof e);return"/"===e[0]&&(e=e.substr(1)),""===e?[]:e.split("/").map(Me)}function Me(e){if("string"!=typeof e)return e;return new URLSearchParams(`=${e.replace(/~1/g,"/").replace(/~0/g,"~")}`).get("")}function De(e){return new URLSearchParams([["",e.replace(/~/g,"~0").replace(/\//g,"~1")]]).toString().slice(1)}const Fe=e=>!e||"/"===e||"#"===e;function Le(e,t){if(Fe(t))return!0;const n=e.charAt(t.length),r=t.slice(-1);return 0===e.indexOf(t)&&(!n||"/"===n||"#"===n)&&"#"!==r}const Be={key:"allOf",plugin:(e,t,n,r,o)=>{if(o.meta&&o.meta.$$ref)return;const s=n.slice(0,-1);if(ye(s))return;if(!Array.isArray(e)){const e=new TypeError("allOf must be an array");return e.fullPath=n,e}let i=!1,a=o.value;if(s.forEach((e=>{a&&(a=a[e])})),a=f()({},a),0===Object.keys(a).length)return;delete a.allOf;const l=[];return l.push(r.replace(s,{})),e.forEach(((e,t)=>{if(!r.isObject(e)){if(i)return null;i=!0;const e=new TypeError("Elements in allOf must be objects");return e.fullPath=n,l.push(e)}l.push(r.mergeDeep(s,e));const o=function(e,t){let{specmap:n,getBaseUrlForNodePath:r=(e=>n.getContext([...t,...e]).baseDoc),targetKeys:o=["$ref","$$ref"]}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const s=[];return he()(e).forEach((function(){if(o.includes(this.key)&&"string"==typeof this.node){const e=this.path,o=t.concat(this.path),i=ve(this.node,r(e));s.push(n.replace(o,i))}})),s}(e,n.slice(0,-1),{getBaseUrlForNodePath:e=>r.getContext([...n,t,...e]).baseDoc,specmap:r});l.push(...o)})),a.example&&l.push(r.remove([].concat(s,"example"))),l.push(r.mergeDeep(s,a)),a.$$ref||l.push(r.remove([].concat(s,"$$ref"))),l}},$e={key:"parameters",plugin:(e,t,n,r)=>{if(Array.isArray(e)&&e.length){const t=Object.assign([],e),o=n.slice(0,-1),s=f()({},J.getIn(r.spec,o));for(let o=0;o{const o=f()({},e);for(const t in e)try{o[t].default=r.modelPropertyMacro(o[t])}catch(e){const t=new Error(e);return t.fullPath=n,t}return J.replace(n,o)}};class Ue{constructor(e){this.root=ze(e||{})}set(e,t){const n=this.getParent(e,!0);if(!n)return void Ve(this.root,t,null);const r=e[e.length-1],{children:o}=n;o[r]?Ve(o[r],t,n):o[r]=ze(t,n)}get(e){if((e=e||[]).length<1)return this.root.value;let t,n,r=this.root;for(let o=0;o{if(!e)return e;const{children:r}=e;return!r[n]&&t&&(r[n]=ze(null,e)),r[n]}),this.root)}}function ze(e,t){return Ve({children:{}},e,t)}function Ve(e,t,n){return e.value=t||{},e.protoValue=n?f()(f()({},n.protoValue),e.value):e.value,Object.keys(e.children).forEach((t=>{const n=e.children[t];e.children[t]=Ve(n,n.value,e)})),e}const We=()=>{};class Je{static getPluginName(e){return e.pluginName}static getPatchesOfType(e,t){return e.filter(t)}constructor(e){Object.assign(this,{spec:"",debugLevel:"info",plugins:[],pluginHistory:{},errors:[],mutations:[],promisedPatches:[],state:{},patches:[],context:{},contextTree:new Ue,showDebug:!1,allPatches:[],pluginProp:"specMap",libMethods:Object.assign(Object.create(this),J,{getInstance:()=>this}),allowMetaPatches:!1},e),this.get=this._get.bind(this),this.getContext=this._getContext.bind(this),this.hasRun=this._hasRun.bind(this),this.wrappedPlugins=this.plugins.map(this.wrapPlugin.bind(this)).filter(J.isFunction),this.patches.push(J.add([],this.spec)),this.patches.push(J.context([],this.context)),this.updatePatches(this.patches)}debug(e){if(this.debugLevel===e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r1?t-1:0),r=1;r!Array.isArray(e)||e.every(((e,n)=>e===t[n]));return function*(r,o){const s={};for(const e of r.filter(J.isAdditiveMutation))yield*i(e.value,e.path,e);function*i(r,a,l){if(J.isObject(r)){const c=a.length-1,u=a[c],p=a.indexOf("properties"),h="properties"===u&&c===p,f=o.allowMetaPatches&&s[r.$$ref];for(const c of Object.keys(r)){const u=r[c],p=a.concat(c),d=J.isObject(u),m=r.$$ref;if(f||d&&(o.allowMetaPatches&&m&&(s[m]=!0),yield*i(u,p,l)),!h&&c===e.key){const r=t(n,a);n&&!r||(yield e.plugin(u,c,p,o,l))}}}else e.key===a[a.length-1]&&(yield e.plugin(r,e.key,a,o))}}}(e)),Object.assign(r.bind(o),{pluginName:e.name||t,isGenerator:J.isGenerator(r)})}nextPlugin(){return this.wrappedPlugins.find((e=>this.getMutationsForPlugin(e).length>0))}nextPromisedPatch(){if(this.promisedPatches.length>0)return Promise.race(this.promisedPatches.map((e=>e.value)))}getPluginHistory(e){const t=this.constructor.getPluginName(e);return this.pluginHistory[t]||[]}getPluginRunCount(e){return this.getPluginHistory(e).length}getPluginHistoryTip(e){const t=this.getPluginHistory(e);return t&&t[t.length-1]||{}}getPluginMutationIndex(e){const t=this.getPluginHistoryTip(e).mutationIndex;return"number"!=typeof t?-1:t}updatePluginHistory(e,t){const n=this.constructor.getPluginName(e);this.pluginHistory[n]=this.pluginHistory[n]||[],this.pluginHistory[n].push(t)}updatePatches(e){J.normalizeArray(e).forEach((e=>{if(e instanceof Error)this.errors.push(e);else try{if(!J.isObject(e))return void this.debug("updatePatches","Got a non-object patch",e);if(this.showDebug&&this.allPatches.push(e),J.isPromise(e.value))return this.promisedPatches.push(e),void this.promisedPatchThen(e);if(J.isContextPatch(e))return void this.setContext(e.path,e.value);J.isMutation(e)&&this.updateMutations(e)}catch(e){console.error(e),this.errors.push(e)}}))}updateMutations(e){"object"==typeof e.value&&!Array.isArray(e.value)&&this.allowMetaPatches&&(e.value=f()({},e.value));const t=J.applyPatch(this.state,e,{allowMetaPatches:this.allowMetaPatches});t&&(this.mutations.push(e),this.state=t)}removePromisedPatch(e){const t=this.promisedPatches.indexOf(e);t<0?this.debug("Tried to remove a promisedPatch that isn't there!"):this.promisedPatches.splice(t,1)}promisedPatchThen(e){return e.value=e.value.then((t=>{const n=f()(f()({},e),{},{value:t});this.removePromisedPatch(e),this.updatePatches(n)})).catch((t=>{this.removePromisedPatch(e),this.updatePatches(t)})),e.value}getMutations(e,t){return e=e||0,"number"!=typeof t&&(t=this.mutations.length),this.mutations.slice(e,t)}getCurrentMutations(){return this.getMutationsForPlugin(this.getCurrentPlugin())}getMutationsForPlugin(e){const t=this.getPluginMutationIndex(e);return this.getMutations(t+1)}getCurrentPlugin(){return this.currentPlugin}getLib(){return this.libMethods}_get(e){return J.getIn(this.state,e)}_getContext(e){return this.contextTree.get(e)}setContext(e,t){return this.contextTree.set(e,t)}_hasRun(e){return this.getPluginRunCount(this.getCurrentPlugin())>(e||0)}dispatch(){const e=this,t=this.nextPlugin();if(!t){const e=this.nextPromisedPatch();if(e)return e.then((()=>this.dispatch())).catch((()=>this.dispatch()));const t={spec:this.state,errors:this.errors};return this.showDebug&&(t.patches=this.allPatches),Promise.resolve(t)}if(e.pluginCount=e.pluginCount||{},e.pluginCount[t]=(e.pluginCount[t]||0)+1,e.pluginCount[t]>100)return Promise.resolve({spec:e.state,errors:e.errors.concat(new Error("We've reached a hard limit of 100 plugin runs"))});if(t!==this.currentPlugin&&this.promisedPatches.length){const e=this.promisedPatches.map((e=>e.value));return Promise.all(e.map((e=>e.then(We,We)))).then((()=>this.dispatch()))}return function(){e.currentPlugin=t;const r=e.getCurrentMutations(),o=e.mutations.length-1;try{if(t.isGenerator)for(const o of t(r,e.getLib()))n(o);else{n(t(r,e.getLib()))}}catch(e){console.error(e),n([Object.assign(Object.create(e),{plugin:t})])}finally{e.updatePluginHistory(t,{mutationIndex:o})}return e.dispatch()}();function n(n){n&&(n=J.fullyNormalizeArray(n),e.updatePatches(n,t))}}}const Ke={refs:ke,allOf:Be,parameters:$e,properties:qe};var He=n(32454);function Ge(e){const{spec:t}=e,{paths:n}=t,r={};if(!n||t.$$normalized)return e;for(const e in n){const o=n[e];if(null==o||!["object","function"].includes(typeof o))continue;const s=o.parameters;for(const n in o){const i=o[n];if(null==i||!["object","function"].includes(typeof i))continue;const a=(0,He.Z)(i,e,n);if(a){r[a]?r[a].push(i):r[a]=[i];const e=r[a];if(e.length>1)e.forEach(((e,t)=>{e.__originalOperationId=e.__originalOperationId||e.operationId,e.operationId=`${a}${t+1}`}));else if(void 0!==i.operationId){const t=e[0];t.__originalOperationId=t.__originalOperationId||i.operationId,t.operationId=a}}if("parameters"!==n){const e=[],n={};for(const r in t)"produces"!==r&&"consumes"!==r&&"security"!==r||(n[r]=t[r],e.push(n));if(s&&(n.parameters=s,e.push(n)),e.length)for(const t of e)for(const e in t)if(i[e]){if("parameters"===e)for(const n of t[e]){i[e].some((e=>e.name&&e.name===n.name||e.$ref&&e.$ref===n.$ref||e.$$ref&&e.$$ref===n.$$ref||e===n))||i[e].push(n)}}else i[e]=t[e]}}}return t.$$normalized=!0,e}function Ze(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{requestInterceptor:n,responseInterceptor:r}=t,o=e.withCredentials?"include":"same-origin";return t=>e({url:t,loadSpec:!0,requestInterceptor:n,responseInterceptor:r,headers:{Accept:be},credentials:o}).then((e=>e.body))}var Ye=n(80129),Xe=n.n(Ye);const Qe="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:window,{FormData:et,Blob:tt,File:nt}=Qe,rt=e=>":/?#[]@!$&'()*+,;=".indexOf(e)>-1,ot=e=>/^[a-z0-9\-._~]+$/i.test(e);function st(e){let{escape:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return"number"==typeof e&&(e=e.toString()),"string"==typeof e&&e.length&&t?n?JSON.parse(e):[...e].map((e=>{if(ot(e))return e;if(rt(e)&&"unsafe"===t)return e;const n=new TextEncoder;return Array.from(n.encode(e)).map((e=>`0${e.toString(16).toUpperCase()}`.slice(-2))).map((e=>`%${e}`)).join("")})).join(""):e}function it(e){const{value:t}=e;return Array.isArray(t)?function(e){let{key:t,value:n,style:r,explode:o,escape:s}=e;const i=e=>st(e,{escape:s});if("simple"===r)return n.map((e=>i(e))).join(",");if("label"===r)return`.${n.map((e=>i(e))).join(".")}`;if("matrix"===r)return n.map((e=>i(e))).reduce(((e,n)=>!e||o?`${e||""};${t}=${n}`:`${e},${n}`),"");if("form"===r){const e=o?`&${t}=`:",";return n.map((e=>i(e))).join(e)}if("spaceDelimited"===r){const e=o?`${t}=`:"";return n.map((e=>i(e))).join(` ${e}`)}if("pipeDelimited"===r){const e=o?`${t}=`:"";return n.map((e=>i(e))).join(`|${e}`)}return}(e):"object"==typeof t?function(e){let{key:t,value:n,style:r,explode:o,escape:s}=e;const i=e=>st(e,{escape:s}),a=Object.keys(n);if("simple"===r)return a.reduce(((e,t)=>{const r=i(n[t]);return`${e?`${e},`:""}${t}${o?"=":","}${r}`}),"");if("label"===r)return a.reduce(((e,t)=>{const r=i(n[t]);return`${e?`${e}.`:"."}${t}${o?"=":"."}${r}`}),"");if("matrix"===r&&o)return a.reduce(((e,t)=>`${e?`${e};`:";"}${t}=${i(n[t])}`),"");if("matrix"===r)return a.reduce(((e,r)=>{const o=i(n[r]);return`${e?`${e},`:`;${t}=`}${r},${o}`}),"");if("form"===r)return a.reduce(((e,t)=>{const r=i(n[t]);return`${e?`${e}${o?"&":","}`:""}${t}${o?"=":","}${r}`}),"");return}(e):function(e){let{key:t,value:n,style:r,escape:o}=e;const s=e=>st(e,{escape:o});if("simple"===r)return s(n);if("label"===r)return`.${s(n)}`;if("matrix"===r)return`;${t}=${s(n)}`;if("form"===r)return s(n);if("deepObject"===r)return s(n,{},!0);return}(e)}const at=(e,t)=>{t.body=e},lt={serializeRes:pt,mergeInQueryOrForm:wt};async function ct(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"object"==typeof e&&(t=e,e=t.url),t.headers=t.headers||{},lt.mergeInQueryOrForm(t),t.headers&&Object.keys(t.headers).forEach((e=>{const n=t.headers[e];"string"==typeof n&&(t.headers[e]=n.replace(/\n+/g," "))})),t.requestInterceptor&&(t=await t.requestInterceptor(t)||t);const n=t.headers["content-type"]||t.headers["Content-Type"];let r;/multipart\/form-data/i.test(n)&&t.body instanceof et&&(delete t.headers["content-type"],delete t.headers["Content-Type"]);try{r=await(t.userFetch||fetch)(t.url,t),r=await lt.serializeRes(r,e,t),t.responseInterceptor&&(r=await t.responseInterceptor(r)||r)}catch(e){if(!r)throw e;const t=new Error(r.statusText||`response status is ${r.status}`);throw t.status=r.status,t.statusCode=r.status,t.responseError=e,t}if(!r.ok){const e=new Error(r.statusText||`response status is ${r.status}`);throw e.status=r.status,e.statusCode=r.status,e.response=r,e}return r}const ut=function(){return/(json|xml|yaml|text)\b/.test(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"")};function pt(e,t){let{loadSpec:n=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r={ok:e.ok,url:e.url||t,status:e.status,statusText:e.statusText,headers:ht(e.headers)},o=r.headers["content-type"],s=n||ut(o);return(s?e.text:e.blob||e.buffer).call(e).then((e=>{if(r.text=e,r.data=e,s)try{const t=function(e,t){return t&&(0===t.indexOf("application/json")||t.indexOf("+json")>0)?JSON.parse(e):le.ZP.load(e)}(e,o);r.body=t,r.obj=t}catch(e){r.parseError=e}return r}))}function ht(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return"function"!=typeof e.entries?{}:Array.from(e.entries()).reduce(((e,t)=>{let[n,r]=t;return e[n]=function(e){return e.includes(", ")?e.split(", "):e}(r),e}),{})}function ft(e,t){return t||"undefined"==typeof navigator||(t=navigator),t&&"ReactNative"===t.product?!(!e||"object"!=typeof e||"string"!=typeof e.uri):void 0!==nt&&e instanceof nt||(void 0!==tt&&e instanceof tt||(!!ArrayBuffer.isView(e)||null!==e&&"object"==typeof e&&"function"==typeof e.pipe))}function dt(e,t){return Array.isArray(e)&&e.some((e=>ft(e,t)))}const mt={form:",",spaceDelimited:"%20",pipeDelimited:"|"},gt={csv:",",ssv:"%20",tsv:"%09",pipes:"|"};function yt(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const{collectionFormat:r,allowEmptyValue:o,serializationOption:s,encoding:i}=t,a="object"!=typeof t||Array.isArray(t)?t:t.value,l=n?e=>e.toString():e=>encodeURIComponent(e),c=l(e);if(void 0===a&&o)return[[c,""]];if(ft(a)||dt(a))return[[c,a]];if(s)return vt(e,a,n,s);if(i){if([typeof i.style,typeof i.explode,typeof i.allowReserved].some((e=>"undefined"!==e))){const{style:t,explode:r,allowReserved:o}=i;return vt(e,a,n,{style:t,explode:r,allowReserved:o})}if(i.contentType){if("application/json"===i.contentType){return[[c,l("string"==typeof a?a:JSON.stringify(a))]]}return[[c,l(a.toString())]]}return"object"!=typeof a?[[c,l(a)]]:Array.isArray(a)&&a.every((e=>"object"!=typeof e))?[[c,a.map(l).join(",")]]:[[c,l(JSON.stringify(a))]]}return"object"!=typeof a?[[c,l(a)]]:Array.isArray(a)?"multi"===r?[[c,a.map(l)]]:[[c,a.map(l).join(gt[r||"csv"])]]:[[c,""]]}function vt(e,t,n,r){const o=r.style||"form",s=void 0===r.explode?"form"===o:r.explode,i=!n&&(r&&r.allowReserved?"unsafe":"reserved"),a=e=>st(e,{escape:i}),l=n?e=>e:e=>st(e,{escape:i});return"object"!=typeof t?[[l(e),a(t)]]:Array.isArray(t)?s?[[l(e),t.map(a)]]:[[l(e),t.map(a).join(mt[o])]]:"deepObject"===o?Object.keys(t).map((n=>[l(`${e}[${n}]`),a(t[n])])):s?Object.keys(t).map((e=>[l(e),a(t[e])])):[[l(e),Object.keys(t).map((e=>[`${l(e)},${a(t[e])}`])).join(",")]]}function bt(e){const t=Object.keys(e).reduce(((t,n)=>{for(const[r,o]of yt(n,e[n]))t[r]=o;return t}),{});return Xe().stringify(t,{encode:!1,indices:!1})||""}function wt(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{url:t="",query:n,form:r}=e;if(r){const t=Object.keys(r).some((e=>{const{value:t}=r[e];return ft(t)||dt(t)})),n=e.headers["content-type"]||e.headers["Content-Type"];if(t||/multipart\/form-data/i.test(n)){const t=(o=e.form,Object.entries(o).reduce(((e,t)=>{let[n,r]=t;for(const[t,o]of yt(n,r,!0))if(Array.isArray(o))for(const n of o)if(ArrayBuffer.isView(n)){const r=new tt([n]);e.append(t,r)}else e.append(t,n);else if(ArrayBuffer.isView(o)){const n=new tt([o]);e.append(t,n)}else e.append(t,o);return e}),new et));at(t,e)}else e.body=bt(r);delete e.form}var o;if(n){const[r,o]=t.split("?");let s="";if(o){const e=Xe().parse(o);Object.keys(n).forEach((t=>delete e[t])),s=Xe().stringify(e,{encode:!0})}const i=function(){for(var e=arguments.length,t=new Array(e),n=0;ne)).join("&");return r?`?${r}`:""}(s,bt(n));e.url=r+i,delete e.query}return e}const Et=e=>{const{baseDoc:t,url:n}=e;return t||n||""},xt=e=>{const{fetch:t,http:n}=e;return t||n||ct};async function St(e){const{spec:t,mode:n,allowMetaPatches:r=!0,pathDiscriminator:o,modelPropertyMacro:s,parameterMacro:i,requestInterceptor:a,responseInterceptor:l,skipNormalization:c,useCircularStructures:u}=e,p=Et(e),h=xt(e);return function(e){p&&(Ke.refs.docCache[p]=e);Ke.refs.fetchJSON=Ze(h,{requestInterceptor:a,responseInterceptor:l});const t=[Ke.refs];"function"==typeof i&&t.push(Ke.parameters);"function"==typeof s&&t.push(Ke.properties);"strict"!==n&&t.push(Ke.allOf);return(f={spec:e,context:{baseDoc:p},plugins:t,allowMetaPatches:r,pathDiscriminator:o,parameterMacro:i,modelPropertyMacro:s,useCircularStructures:u},new Je(f).dispatch()).then(c?async e=>e:Ge);var f}(t)}const _t={name:"generic",match:()=>!0,normalize(e){let{spec:t}=e;const{spec:n}=Ge({spec:t});return n},resolve:async e=>St(e)};const jt=e=>{try{const{openapi:t}=e;return"string"==typeof t&&/^3\.0\.([0123])(?:-rc[012])?$/.test(t)}catch{return!1}},Ot=e=>{try{const{openapi:t}=e;return"string"==typeof t&&/^3\.1\.(?:[1-9]\d*|0)$/.test(t)}catch{return!1}},kt=e=>jt(e)||Ot(e),At={name:"openapi-2",match(e){let{spec:t}=e;return(e=>{try{const{swagger:t}=e;return"2.0"===t}catch{return!1}})(t)},normalize(e){let{spec:t}=e;const{spec:n}=Ge({spec:t});return n},resolve:async e=>async function(e){return St(e)}(e)};const Ct={name:"openapi-3-0",match(e){let{spec:t}=e;return jt(t)},normalize(e){let{spec:t}=e;const{spec:n}=Ge({spec:t});return n},resolve:async e=>async function(e){return St(e)}(e)};var Pt=n(43500);class Nt extends Pt.RP{constructor(e,t,n){super(e,t,n),this.element="annotation"}get code(){return this.attributes.get("code")}set code(e){this.attributes.set("code",e)}}const It=Nt;class Tt extends Pt.RP{constructor(e,t,n){super(e,t,n),this.element="comment"}}const Rt=Tt;const Mt=function(){return!1};const Dt=function(){return!0};function Ft(e){return null!=e&&"object"==typeof e&&!0===e["@@functional/placeholder"]}function Lt(e){return function t(n){return 0===arguments.length||Ft(n)?t:e.apply(this,arguments)}}function Bt(e){return function t(n,r){switch(arguments.length){case 0:return t;case 1:return Ft(n)?t:Lt((function(t){return e(n,t)}));default:return Ft(n)&&Ft(r)?t:Ft(n)?Lt((function(t){return e(t,r)})):Ft(r)?Lt((function(t){return e(n,t)})):e(n,r)}}}const $t=Array.isArray||function(e){return null!=e&&e.length>=0&&"[object Array]"===Object.prototype.toString.call(e)};function qt(e,t,n){return function(){if(0===arguments.length)return n();var r=arguments[arguments.length-1];if(!$t(r)){for(var o=0;o=arguments.length)?a=t[i]:(a=arguments[o],o+=1),r[i]=a,Ft(a)||(s-=1),i+=1}return s<=0?n.apply(this,r):Ht(s,Gt(e,r,n))}}const Zt=Bt((function(e,t){return 1===e?Lt(t):Ht(e,Gt(e,[],t))}));function Yt(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}function Xt(e,t,n){for(var r=0,o=n.length;r=0;)Qt(t=on[n],e)&&!an(r,t)&&(r[r.length]=t),n-=1;return r})):Lt((function(e){return Object(e)!==e?[]:Object.keys(e)}));const cn=Lt((function(e){return null===e?"Null":void 0===e?"Undefined":Object.prototype.toString.call(e).slice(8,-1)}));function un(e,t,n,r){var o=Yt(e);function s(e,t){return pn(e,t,n.slice(),r.slice())}return!Xt((function(e,t){return!Xt(s,t,e)}),Yt(t),o)}function pn(e,t,n,r){if(en(e,t))return!0;var o,s,i=cn(e);if(i!==cn(t))return!1;if("function"==typeof e["fantasy-land/equals"]||"function"==typeof t["fantasy-land/equals"])return"function"==typeof e["fantasy-land/equals"]&&e["fantasy-land/equals"](t)&&"function"==typeof t["fantasy-land/equals"]&&t["fantasy-land/equals"](e);if("function"==typeof e.equals||"function"==typeof t.equals)return"function"==typeof e.equals&&e.equals(t)&&"function"==typeof t.equals&&t.equals(e);switch(i){case"Arguments":case"Array":case"Object":if("function"==typeof e.constructor&&"Promise"===(o=e.constructor,null==(s=String(o).match(/^function (\w*)/))?"":s[1]))return e===t;break;case"Boolean":case"Number":case"String":if(typeof e!=typeof t||!en(e.valueOf(),t.valueOf()))return!1;break;case"Date":if(!en(e.valueOf(),t.valueOf()))return!1;break;case"Error":return e.name===t.name&&e.message===t.message;case"RegExp":if(e.source!==t.source||e.global!==t.global||e.ignoreCase!==t.ignoreCase||e.multiline!==t.multiline||e.sticky!==t.sticky||e.unicode!==t.unicode)return!1}for(var a=n.length-1;a>=0;){if(n[a]===e)return r[a]===t;a-=1}switch(i){case"Map":return e.size===t.size&&un(e.entries(),t.entries(),n.concat([e]),r.concat([t]));case"Set":return e.size===t.size&&un(e.values(),t.values(),n.concat([e]),r.concat([t]));case"Arguments":case"Array":case"Object":case"Boolean":case"Number":case"String":case"Date":case"Error":case"RegExp":case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"ArrayBuffer":break;default:return!1}var l=ln(e);if(l.length!==ln(t).length)return!1;var c=n.concat([e]),u=r.concat([t]);for(a=l.length-1;a>=0;){var p=l[a];if(!Qt(p,t)||!pn(t[p],e[p],c,u))return!1;a-=1}return!0}const hn=Bt((function(e,t){return pn(e,t,[],[])}));function fn(e,t){return function(e,t,n){var r,o;if("function"==typeof e.indexOf)switch(typeof t){case"number":if(0===t){for(r=1/t;n=0}function dn(e,t){for(var n=0,r=t.length,o=Array(r);n":jn(n,r)},r=function(e,t){return dn((function(t){return mn(t)+": "+n(e[t])}),t.slice().sort())};switch(Object.prototype.toString.call(e)){case"[object Arguments]":return"(function() { return arguments; }("+dn(n,e).join(", ")+"))";case"[object Array]":return"["+dn(n,e).concat(r(e,_n((function(e){return/^\d+$/.test(e)}),ln(e)))).join(", ")+"]";case"[object Boolean]":return"object"==typeof e?"new Boolean("+n(e.valueOf())+")":e.toString();case"[object Date]":return"new Date("+(isNaN(e.valueOf())?n(NaN):mn(yn(e)))+")";case"[object Map]":return"new Map("+n(Array.from(e))+")";case"[object Null]":return"null";case"[object Number]":return"object"==typeof e?"new Number("+n(e.valueOf())+")":1/e==-1/0?"-0":e.toString(10);case"[object Set]":return"new Set("+n(Array.from(e).sort())+")";case"[object String]":return"object"==typeof e?"new String("+n(e.valueOf())+")":mn(e);case"[object Undefined]":return"undefined";default:if("function"==typeof e.toString){var o=e.toString();if("[object Object]"!==o)return o}return"{"+r(e,ln(e)).join(", ")+"}"}}const On=Lt((function(e){return jn(e,[])}));const kn=Bt((function(e,t){if(e===t)return t;function n(e,t){if(e>t!=t>e)return t>e?t:e}var r=n(e,t);if(void 0!==r)return r;var o=n(typeof e,typeof t);if(void 0!==o)return o===typeof e?e:t;var s=On(e),i=n(s,On(t));return void 0!==i&&i===s?e:t}));var An=function(){function e(e,t){this.xf=t,this.f=e}return e.prototype["@@transducer/init"]=zt,e.prototype["@@transducer/result"]=Vt,e.prototype["@@transducer/step"]=function(e,t){return this.xf["@@transducer/step"](e,this.f(t))},e}();const Cn=Bt(qt(["fantasy-land/map","map"],(function(e){return function(t){return new An(e,t)}}),(function(e,t){switch(Object.prototype.toString.call(t)){case"[object Function]":return Zt(t.length,(function(){return e.call(this,t.apply(this,arguments))}));case"[object Object]":return bn((function(n,r){return n[r]=e(t[r]),n}),{},ln(t));default:return dn(e,t)}}))),Pn=Number.isInteger||function(e){return e<<0===e};function Nn(e){return"[object String]"===Object.prototype.toString.call(e)}const In=Bt((function(e,t){var n=e<0?t.length+e:e;return Nn(t)?t.charAt(n):t[n]}));const Tn=Bt((function(e,t){if(null!=t)return Pn(e)?In(e,t):t[e]}));const Rn=Bt((function(e,t){return Cn(Tn(e),t)}));function Mn(e){return function t(n,r,o){switch(arguments.length){case 0:return t;case 1:return Ft(n)?t:Bt((function(t,r){return e(n,t,r)}));case 2:return Ft(n)&&Ft(r)?t:Ft(n)?Bt((function(t,n){return e(t,r,n)})):Ft(r)?Bt((function(t,r){return e(n,t,r)})):Lt((function(t){return e(n,r,t)}));default:return Ft(n)&&Ft(r)&&Ft(o)?t:Ft(n)&&Ft(r)?Bt((function(t,n){return e(t,n,o)})):Ft(n)&&Ft(o)?Bt((function(t,n){return e(t,r,n)})):Ft(r)&&Ft(o)?Bt((function(t,r){return e(n,t,r)})):Ft(n)?Lt((function(t){return e(t,r,o)})):Ft(r)?Lt((function(t){return e(n,t,o)})):Ft(o)?Lt((function(t){return e(n,r,t)})):e(n,r,o)}}}const Dn=Lt((function(e){return!!$t(e)||!!e&&("object"==typeof e&&(!Nn(e)&&(0===e.length||e.length>0&&(e.hasOwnProperty(0)&&e.hasOwnProperty(e.length-1)))))}));var Fn="undefined"!=typeof Symbol?Symbol.iterator:"@@iterator";function Ln(e,t,n){return function(r,o,s){if(Dn(s))return e(r,o,s);if(null==s)return o;if("function"==typeof s["fantasy-land/reduce"])return t(r,o,s,"fantasy-land/reduce");if(null!=s[Fn])return n(r,o,s[Fn]());if("function"==typeof s.next)return n(r,o,s);if("function"==typeof s.reduce)return t(r,o,s,"reduce");throw new TypeError("reduce: list must be array or iterable")}}function Bn(e,t,n){for(var r=0,o=n.length;r1){var s=!rr(r)&&Qt(o,r)&&"object"==typeof r[o]?r[o]:Pn(t[1])?[]:{};n=e(Array.prototype.slice.call(t,1),n,s)}return function(e,t,n){if(Pn(e)&&$t(n)){var r=[].concat(n);return r[e]=t,r}var o={};for(var s in n)o[s]=n[s];return o[e]=t,o}(o,n,r)}));function sr(e){var t=Object.prototype.toString.call(e);return"[object Function]"===t||"[object AsyncFunction]"===t||"[object GeneratorFunction]"===t||"[object AsyncGeneratorFunction]"===t}const ir=Bt((function(e,t){return e&&t}));const ar=Bt((function(e,t){var n=Zt(e,t);return Zt(e,(function(){return bn(Qn,Cn(n,arguments[0]),Array.prototype.slice.call(arguments,1))}))}));const lr=Lt((function(e){return ar(e.length,e)}));const cr=Bt((function(e,t){return sr(e)?function(){return e.apply(this,arguments)&&t.apply(this,arguments)}:lr(ir)(e,t)}));const ur=Lt((function(e){return function(t,n){return e(t,n)?-1:e(n,t)?1:0}}));const pr=lr(Lt((function(e){return!e})));function hr(e,t){return function(){return t.call(this,e.apply(this,arguments))}}function fr(e,t){return function(){var n=arguments.length;if(0===n)return t();var r=arguments[n-1];return $t(r)||"function"!=typeof r[e]?t.apply(this,arguments):r[e].apply(r,Array.prototype.slice.call(arguments,0,n-1))}}const dr=Mn(fr("slice",(function(e,t,n){return Array.prototype.slice.call(n,e,t)})));const mr=Lt(fr("tail",dr(1,1/0)));function gr(){if(0===arguments.length)throw new Error("pipe requires at least one argument");return Ht(arguments[0].length,Jn(hr,arguments[0],mr(arguments)))}var yr=Bt((function(e,t){return Zt(Jn(kn,0,Rn("length",t)),(function(){var n=arguments,r=this;return e.apply(r,dn((function(e){return e.apply(r,n)}),t))}))}));const vr=yr;function br(e){return new RegExp(e.source,e.flags?e.flags:(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.sticky?"y":"")+(e.unicode?"u":"")+(e.dotAll?"s":""))}function wr(e,t,n){if(n||(n=new Er),function(e){var t=typeof e;return null==e||"object"!=t&&"function"!=t}(e))return e;var r=function(r){var o=n.get(e);if(o)return o;for(var s in n.set(e,r),e)Object.prototype.hasOwnProperty.call(e,s)&&(r[s]=t?wr(e[s],!0,n):e[s]);return r};switch(cn(e)){case"Object":return r(Object.create(Object.getPrototypeOf(e)));case"Array":return r([]);case"Date":return new Date(e.valueOf());case"RegExp":return br(e);case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":return e.slice();default:return e}}var Er=function(){function e(){this.map={},this.length=0}return e.prototype.set=function(e,t){const n=this.hash(e);let r=this.map[n];r||(this.map[n]=r=[]),r.push([e,t]),this.length+=1},e.prototype.hash=function(e){let t=[];for(var n in e)t.push(Object.prototype.toString.call(e[n]));return t.join()},e.prototype.get=function(e){if(this.length<=180){for(const t in this.map){const n=this.map[t];for(let t=0;t=0&&this.i>=this.n?Ut(n):n},e}();function Ir(e){return function(t){return new Nr(e,t)}}const Tr=Bt(qt(["take"],Ir,(function(e,t){return dr(0,e<0?1/0:e,t)})));function Rr(e,t){for(var n=t.length-1;n>=0&&e(t[n]);)n-=1;return dr(0,n+1,t)}var Mr=function(){function e(e,t){this.f=e,this.retained=[],this.xf=t}return e.prototype["@@transducer/init"]=zt,e.prototype["@@transducer/result"]=function(e){return this.retained=null,this.xf["@@transducer/result"](e)},e.prototype["@@transducer/step"]=function(e,t){return this.f(t)?this.retain(e,t):this.flush(e,t)},e.prototype.flush=function(e,t){return e=zn(this.xf,e,this.retained),this.retained=[],this.xf["@@transducer/step"](e,t)},e.prototype.retain=function(e,t){return this.retained.push(t),e},e}();function Dr(e){return function(t){return new Mr(e,t)}}const Fr=Bt(qt([],Dr,Rr));var Lr=function(){function e(e,t){this.xf=t,this.f=e}return e.prototype["@@transducer/init"]=zt,e.prototype["@@transducer/result"]=Vt,e.prototype["@@transducer/step"]=function(e,t){if(this.f){if(this.f(t))return e;this.f=null}return this.xf["@@transducer/step"](e,t)},e}();function Br(e){return function(t){return new Lr(e,t)}}const $r=Bt(qt(["dropWhile"],Br,(function(e,t){for(var n=0,r=t.length;ne.classes.contains("api"))).first}get results(){return this.children.filter((e=>e.classes.contains("result")))}get result(){return this.results.first}get annotations(){return this.children.filter((e=>"annotation"===e.element))}get warnings(){return this.children.filter((e=>"annotation"===e.element&&e.classes.contains("warning")))}get errors(){return this.children.filter((e=>"annotation"===e.element&&e.classes.contains("error")))}get isEmpty(){return this.children.reject((e=>"annotation"===e.element)).isEmpty}replaceResult(e){const{result:t}=this;if(qo(t))return!1;const n=this.content.findIndex((e=>e===t));return-1!==n&&(this.content[n]=e,!0)}}const zo=Uo;class Vo extends Pt.ON{constructor(e,t,n){super(e,t,n),this.element="sourceMap"}get positionStart(){return this.children.filter((e=>e.classes.contains("position"))).get(0)}get positionEnd(){return this.children.filter((e=>e.classes.contains("position"))).get(1)}set position(e){if(null===e)return;const t=new Pt.ON([e.start.row,e.start.column,e.start.char]),n=new Pt.ON([e.end.row,e.end.column,e.end.char]);t.classes.push("position"),n.classes.push("position"),this.push(t).push(n)}}const Wo=Vo;var Jo=n(80621),Ko=n(52201),Ho=n(27398);function Go(e){return Go="function"==typeof Ko&&"symbol"==typeof Ho?function(e){return typeof e}:function(e){return e&&"function"==typeof Ko&&e.constructor===Ko&&e!==Ko.prototype?"symbol":typeof e},Go(e)}var Zo=n(26189);function Yo(e){var t=function(e,t){if("object"!==Go(e)||null===e)return e;var n=e[Zo];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==Go(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Go(t)?t:String(t)}function Xo(e,t,n){return(t=Yo(t))in e?Jo(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Qo=Zt(1,gr(cn,Xr("GeneratorFunction")));const es=Zt(1,gr(cn,Xr("AsyncFunction")));const ts=Gn([gr(cn,Xr("Function")),Qo,es]);const ns=pr(ts);const rs=Zt(1,ts(Array.isArray)?Array.isArray:gr(cn,Xr("Array")));const os=cr(rs,so);var ss=Zt(3,(function(e,t,n){var r=uo(e,n),o=uo(ro(e),n);if(!ns(r)&&!os(e)){var s=$n(r,o);return er(s,t)}}));const is=ss;const as=Wr(no),ls=(e,t)=>"function"==typeof(null==t?void 0:t[e]),cs=e=>null!=e&&Object.prototype.hasOwnProperty.call(e,"_storedElement")&&Object.prototype.hasOwnProperty.call(e,"_content"),us=(e,t)=>{var n;return(null==t||null===(n=t.primitive)||void 0===n?void 0:n.call(t))===e},ps=(e,t)=>{var n,r;return(null==t||null===(n=t.classes)||void 0===n||null===(r=n.includes)||void 0===r?void 0:r.call(n,e))||!1},hs=(e,t)=>(null==t?void 0:t.element)===e,fs=e=>e({hasMethod:ls,hasBasicElementProps:cs,primitiveEq:us,isElementType:hs,hasClass:ps}),ds=fs((({hasBasicElementProps:e,primitiveEq:t})=>n=>n instanceof Pt.W_||e(n)&&t(void 0,n))),ms=fs((({hasBasicElementProps:e,primitiveEq:t})=>n=>n instanceof Pt.RP||e(n)&&t("string",n))),gs=fs((({hasBasicElementProps:e,primitiveEq:t})=>n=>n instanceof Pt.VL||e(n)&&t("number",n))),ys=fs((({hasBasicElementProps:e,primitiveEq:t})=>n=>n instanceof Pt.zr||e(n)&&t("null",n))),vs=fs((({hasBasicElementProps:e,primitiveEq:t})=>n=>n instanceof Pt.hh||e(n)&&t("boolean",n))),bs=fs((({hasBasicElementProps:e,primitiveEq:t,hasMethod:n})=>r=>r instanceof Pt.Sb||e(r)&&t("object",r)&&n("keys",r)&&n("values",r)&&n("items",r))),ws=fs((({hasBasicElementProps:e,primitiveEq:t,hasMethod:n})=>r=>r instanceof Pt.ON&&!(r instanceof Pt.Sb)||e(r)&&t("array",r)&&n("push",r)&&n("unshift",r)&&n("map",r)&&n("reduce",r))),Es=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Pt.c6||e(r)&&t("member",r)&&n(void 0,r))),xs=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Pt.EA||e(r)&&t("link",r)&&n(void 0,r))),Ss=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Pt.tK||e(r)&&t("ref",r)&&n(void 0,r))),_s=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof It||e(r)&&t("annotation",r)&&n("array",r))),js=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Rt||e(r)&&t("comment",r)&&n("string",r))),Os=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof zo||e(r)&&t("parseResult",r)&&n("array",r))),ks=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Wo||e(r)&&t("sourceMap",r)&&n("array",r))),As=e=>hs("object",e)||hs("array",e)||hs("boolean",e)||hs("number",e)||hs("string",e)||hs("null",e)||hs("member",e),Cs=e=>{var t,n;return ks(null==e||null===(t=e.meta)||void 0===t||null===(n=t.get)||void 0===n?void 0:n.call(t,"sourceMap"))},Ps=(e,t)=>{if(0===e.length)return!0;const n=t.attributes.get("symbols");return!!ws(n)&&Kt(as(n.toValue()),e)},Ns=(e,t)=>0===e.length||Kt(as(t.classes.toValue()),e);const Is=hn(null);const Ts=pr(Is);function Rs(e){return Rs="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Rs(e)}const Ms=function(e){return"object"===Rs(e)};const Ds=Zt(1,cr(Ts,Ms));var Fs=gr(cn,Xr("Object")),Ls=gr(On,hn(On(Object))),Bs=wo(cr(ts,Ls),["constructor"]);const $s=Zt(1,(function(e){if(!Ds(e)||!Fs(e))return!1;var t=Object.getPrototypeOf(e);return!!Is(t)||Bs(t)}));class qs extends Pt.lS{constructor(){super(),this.register("annotation",It),this.register("comment",Rt),this.register("parseResult",zo),this.register("sourceMap",Wo)}}const Us=new qs,zs=e=>{const t=new qs;return $s(e)&&t.use(e),t},Vs=Us;function Ws(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}const Js=()=>({predicates:function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Ks){var s=Ks(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var Ys=n(43992);const Xs=Zt(1,gr(cn,Xr("String"))),Qs=(e,t,n)=>{const r=e[t];if(null!=r){if(!n&&"function"==typeof r)return r;const e=n?r.leave:r.enter;if("function"==typeof e)return e}else{const r=n?e.leave:e.enter;if(null!=r){if("function"==typeof r)return r;const e=r[t];if("function"==typeof e)return e}}return null},ei={},ti=e=>null==e?void 0:e.type,ni=e=>"string"==typeof ti(e),ri=(e,{visitFnGetter:t=Qs,nodeTypeGetter:n=ti}={})=>{const r=new Array(e.length);return{enter(o,...s){for(let i=0;i{const p=n||{};let h,f,d=Array.isArray(e),m=[e],g=-1,y=[];const v=[],b=[];let w=e;do{g+=1;const e=g===m.length;let n,E;const x=e&&0!==y.length;if(e){if(n=0===b.length?void 0:v.pop(),E=f,f=b.pop(),x){E=d?E.slice():Object.create(Object.getPrototypeOf(E),Object.getOwnPropertyDescriptors(E));let e=0;for(let t=0;t{const p=n||{};let h,f,d=Array.isArray(e),m=[e],g=-1,y=[];const v=[],b=[];let w=e;do{g+=1;const e=g===m.length;let n,E;const x=e&&0!==y.length;if(e){if(n=0===b.length?void 0:v.pop(),E=f,f=b.pop(),x){E=d?E.slice():Object.create(Object.getPrototypeOf(E),Object.getOwnPropertyDescriptors(E));let e=0;for(let t=0;tbs(e)?"ObjectElement":ws(e)?"ArrayElement":Es(e)?"MemberElement":ms(e)?"StringElement":vs(e)?"BooleanElement":gs(e)?"NumberElement":ys(e)?"NullElement":xs(e)?"LinkElement":Ss(e)?"RefElement":void 0,ui=gr(ci,Xs),pi={ObjectElement:["content"],ArrayElement:["content"],MemberElement:["key","value"],StringElement:[],BooleanElement:[],NumberElement:[],NullElement:[],RefElement:[],LinkElement:[],Annotation:[],Comment:[],ParseResultElement:["content"],SourceMap:["content"]},hi=Ys({props:{result:[],predicate:Mt,returnOnTrue:void 0,returnOnFalse:void 0},init({predicate:e=this.predicate,returnOnTrue:t=this.returnOnTrue,returnOnFalse:n=this.returnOnFalse}={}){this.result=[],this.predicate=e,this.returnOnTrue=t,this.returnOnFalse=n},methods:{enter(e){return this.predicate(e)?(this.result.push(e),this.returnOnTrue):this.returnOnFalse}}}),fi=(e,t,n={})=>{let{keyMap:r=pi}=n,o=Zs(n,si);return oi(e,t,li({keyMap:r,nodeTypeGetter:ci,nodePredicate:ui},o))};fi[Symbol.for("nodejs.util.promisify.custom")]=async(e,t,n={})=>{let{keyMap:r=pi}=n,o=Zs(n,ii);return oi[Symbol.for("nodejs.util.promisify.custom")](e,t,li({keyMap:r,nodeTypeGetter:ci,nodePredicate:ui},o))};const di=(e,t,n={})=>{if(0===t.length)return e;const r=So(Js,"toolboxCreator",n),o=So({},"visitorOptions",n),s=So(ci,"nodeTypeGetter",o),i=r(),a=t.map((e=>e(i))),l=ri(a.map(So({},"visitor")),{nodeTypeGetter:s});a.forEach(is(["pre"],[]));const c=fi(e,l,o);return a.forEach(is(["post"],[])),c};function mi(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function gi(e){for(var t=1;t{const r=new t(e);return di(r,n,{toolboxCreator:Js,visitorOptions:{nodeTypeGetter:ci}})},vi=e=>(t,n={})=>yi(t,gi(gi({},n),{},{Type:e}));Pt.Sb.refract=vi(Pt.Sb),Pt.ON.refract=vi(Pt.ON),Pt.RP.refract=vi(Pt.RP),Pt.hh.refract=vi(Pt.hh),Pt.zr.refract=vi(Pt.zr),Pt.VL.refract=vi(Pt.VL),Pt.EA.refract=vi(Pt.EA),Pt.tK.refract=vi(Pt.tK),It.refract=vi(It),Rt.refract=vi(Rt),zo.refract=vi(zo),Wo.refract=vi(Wo);const bi=(e,t=new WeakMap)=>(Es(e)?(t.set(e.key,e),bi(e.key,t),t.set(e.value,e),bi(e.value,t)):e.children.forEach((n=>{t.set(n,e),bi(n,t)})),t),wi=Ys.init((function({element:e}){let t;this.transclude=function(n,r){var o;if(n===e)return r;if(n===r)return e;t=null!==(o=t)&&void 0!==o?o:bi(e);const s=t.get(n);return qo(s)?void 0:(bs(s)?((e,t,n)=>{const r=n.get(e);bs(r)&&(r.content=r.map(((o,s,i)=>i===e?(n.delete(e),n.set(t,r),t):i)))})(n,r,t):ws(s)?((e,t,n)=>{const r=n.get(e);ws(r)&&(r.content=r.map((o=>o===e?(n.delete(e),n.set(t,r),t):o)))})(n,r,t):Es(s)&&((e,t,n)=>{const r=n.get(e);Es(r)&&(r.key===e&&(r.key=t,n.delete(e),n.set(t,r)),r.value===e&&(r.value=t,n.delete(e),n.set(t,r)))})(n,r,t),e)}})),Ei=wi,xi=["keyMap"],Si=["keyMap"];function _i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ji(e){for(var t=1;t"string"==typeof(null==e?void 0:e.type)?e.type:ci(e),ki=ji({EphemeralObject:["content"],EphemeralArray:["content"]},pi),Ai=(e,t,n={})=>{let{keyMap:r=ki}=n,o=Zs(n,xi);return fi(e,t,ji({keyMap:r,nodeTypeGetter:Oi,nodePredicate:Dt,detectCycles:!1,deleteNodeSymbol:Symbol.for("delete-node"),skipVisitingNodeSymbol:Symbol.for("skip-visiting-node")},o))};Ai[Symbol.for("nodejs.util.promisify.custom")]=async(e,t={})=>{let{keyMap:n=ki}=t,r=Zs(t,Si);return fi[Symbol.for("nodejs.util.promisify.custom")](e,visitor,ji({keyMap:n,nodeTypeGetter:Oi,nodePredicate:Dt,detectCycles:!1,deleteNodeSymbol:Symbol.for("delete-node"),skipVisitingNodeSymbol:Symbol.for("skip-visiting-node")},r))};const Ci=class{constructor(e){Xo(this,"type","EphemeralArray"),Xo(this,"content",[]),Xo(this,"reference",void 0),this.content=e,this.reference=[]}toReference(){return this.reference}toArray(){return this.reference.push(...this.content),this.reference}};const Pi=class{constructor(e){Xo(this,"type","EphemeralObject"),Xo(this,"content",[]),Xo(this,"reference",void 0),this.content=e,this.reference={}}toReference(){return this.reference}toObject(){return Object.assign(this.reference,Object.fromEntries(this.content))}},Ni=Ys.init((function(){const e=new WeakMap;this.BooleanElement=function(e){return e.toValue()},this.NumberElement=function(e){return e.toValue()},this.StringElement=function(e){return e.toValue()},this.NullElement=function(){return null},this.ObjectElement={enter(t){if(e.has(t))return e.get(t).toReference();const n=new Pi(t.content);return e.set(t,n),n}},this.EphemeralObject={leave:e=>e.toObject()},this.MemberElement={enter:e=>[e.key,e.value]},this.ArrayElement={enter(t){if(e.has(t))return e.get(t).toReference();const n=new Ci(t.content);return e.set(t,n),n}},this.EphemeralArray={leave:e=>e.toArray()}})),Ii=(e,t=Vs)=>{if(Xs(e))try{return t.fromRefract(JSON.parse(e))}catch{}return $s(e)&&Hr("element",e)?t.fromRefract(e):t.toElement(e)},Ti=e=>Ai(e,Ni());const Ri=hn("");var Mi=cr(Zt(1,gr(cn,Xr("Number"))),isFinite);var Di=Zt(1,Mi);var Fi=cr(ts(Number.isFinite)?Zt(1,$n(Number.isFinite,Number)):Di,vr(hn,[Math.floor,eo]));var Li=Zt(1,Fi);const Bi=ts(Number.isInteger)?Zt(1,$n(Number.isInteger,Number)):Li;var $i=Or((function(e,t){return gr(Io(""),$r(as(e)),io(""))(t)}));const qi=$i;class Ui extends Error{constructor(e){super(`Invalid $ref pointer "${e}". Pointers must begin with "/"`),this.name=this.constructor.name,this.message=`Invalid $ref pointer "${e}". Pointers must begin with "/"`,"function"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error(`Invalid $ref pointer "${e}". Pointers must begin with "/"`).stack}}class zi extends Error{constructor(e){super(e),this.name=this.constructor.name,this.message=e,"function"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error(e).stack}}const Vi=gr(Co(/~/g,"~0"),Co(/\//g,"~1"),encodeURIComponent),Wi=gr(Co(/~1/g,"/"),Co(/~0/g,"~"),(e=>{try{return decodeURIComponent(e)}catch{return e}})),Ji=(e,t)=>{const n=(e=>{if(Ri(e))return[];if(!To("/",e))throw new Ui(e);const t=gr(Io("/"),Cn(Wi))(e);return mr(t)})(e);return n.reduce(((e,t)=>{if(bs(e)){if(!e.hasKey(t))throw new zi(`Evaluation failed on token: "${t}"`);return e.get(t)}if(ws(e)){if(!(t in e.content)||!Bi(Number(t)))throw new zi(`Evaluation failed on token: "${t}"`);return e.get(Number(t))}throw new zi(`Evaluation failed on token: "${t}"`)}),t)},Ki=e=>{const t=(e=>{const t=e.indexOf("#");return-1!==t?e.substring(t):"#"})(e);return qi("#",t)};class Hi extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="callback"}}const Gi=Hi;class Zi extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="components"}get schemas(){return this.get("schemas")}set schemas(e){this.set("schemas",e)}get responses(){return this.get("responses")}set responses(e){this.set("responses",e)}get parameters(){return this.get("parameters")}set parameters(e){this.set("parameters",e)}get examples(){return this.get("examples")}set examples(e){this.set("examples",e)}get requestBodies(){return this.get("requestBodies")}set requestBodies(e){this.set("requestBodies",e)}get headers(){return this.get("headers")}set headers(e){this.set("headers",e)}get securitySchemes(){return this.get("securitySchemes")}set securitySchemes(e){this.set("securitySchemes",e)}get links(){return this.get("links")}set links(e){this.set("links",e)}get callbacks(){return this.get("callbacks")}set callbacks(e){this.set("callbacks",e)}}const Yi=Zi;class Xi extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="contact"}get name(){return this.get("name")}set name(e){this.set("name",e)}get url(){return this.get("url")}set url(e){this.set("url",e)}get email(){return this.get("email")}set email(e){this.set("email",e)}}const Qi=Xi;class ea extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="discriminator"}get propertyName(){return this.get("propertyName")}set propertyName(e){this.set("propertyName",e)}get mapping(){return this.get("mapping")}set mapping(e){this.set("mapping",e)}}const ta=ea;class na extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="encoding"}get contentType(){return this.get("contentType")}set contentType(e){this.set("contentType",e)}get headers(){return this.get("headers")}set headers(e){this.set("headers",e)}get style(){return this.get("style")}set style(e){this.set("style",e)}get explode(){return this.get("explode")}set explode(e){this.set("explode",e)}get allowedReserved(){return this.get("allowedReserved")}set allowedReserved(e){this.set("allowedReserved",e)}}const ra=na;class oa extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="example"}get summary(){return this.get("summary")}set summary(e){this.set("summary",e)}get description(){return this.get("description")}set description(e){this.set("description",e)}get value(){return this.get("value")}set value(e){this.set("value",e)}get externalValue(){return this.get("externalValue")}set externalValue(e){this.set("externalValue",e)}}const sa=oa;class ia extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="externalDocumentation"}get description(){return this.get("description")}set description(e){this.set("description",e)}get url(){return this.get("url")}set url(e){this.set("url",e)}}const aa=ia;class la extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="header"}get required(){return this.hasKey("required")?this.get("required"):new Pt.hh(!1)}set required(e){this.set("required",e)}get deprecated(){return this.hasKey("deprecated")?this.get("deprecated"):new Pt.hh(!1)}set deprecated(e){this.set("deprecated",e)}get allowEmptyValue(){return this.get("allowEmptyValue")}set allowEmptyValue(e){this.set("allowEmptyValue",e)}get style(){return this.get("style")}set style(e){this.set("style",e)}get explode(){return this.get("explode")}set explode(e){this.set("explode",e)}get allowReserved(){return this.get("allowReserved")}set allowReserved(e){this.set("allowReserved",e)}get schema(){return this.get("schema")}set schema(e){this.set("schema",e)}get example(){return this.get("example")}set example(e){this.set("example",e)}get examples(){return this.get("examples")}set examples(e){this.set("examples",e)}get contentProp(){return this.get("content")}set contentProp(e){this.set("content",e)}}Object.defineProperty(la.prototype,"description",{get(){return this.get("description")},set(e){this.set("description",e)},enumerable:!0});const ca=la;class ua extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="info",this.classes.push("info")}get title(){return this.get("title")}set title(e){this.set("title",e)}get description(){return this.get("description")}set description(e){this.set("description",e)}get termsOfService(){return this.get("termsOfService")}set termsOfService(e){this.set("termsOfService",e)}get contact(){return this.get("contact")}set contact(e){this.set("contact",e)}get license(){return this.get("license")}set license(e){this.set("license",e)}get version(){return this.get("version")}set version(e){this.set("version",e)}}const pa=ua;class ha extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="license"}get name(){return this.get("name")}set name(e){this.set("name",e)}get url(){return this.get("url")}set url(e){this.set("url",e)}}const fa=ha;class da extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="link"}get operationRef(){return this.get("operationRef")}set operationRef(e){this.set("operationRef",e)}get operationId(){return this.get("operationId")}set operationId(e){this.set("operationId",e)}get operation(){var e,t;return ms(this.operationRef)?null===(e=this.operationRef)||void 0===e?void 0:e.meta.get("operation"):ms(this.operationId)?null===(t=this.operationId)||void 0===t?void 0:t.meta.get("operation"):void 0}set operation(e){this.set("operation",e)}get parameters(){return this.get("parameters")}set parameters(e){this.set("parameters",e)}get requestBody(){return this.get("requestBody")}set requestBody(e){this.set("requestBody",e)}get description(){return this.get("description")}set description(e){this.set("description",e)}get server(){return this.get("server")}set server(e){this.set("server",e)}}const ma=da;class ga extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="mediaType"}get schema(){return this.get("schema")}set schema(e){this.set("schema",e)}get example(){return this.get("example")}set example(e){this.set("example",e)}get examples(){return this.get("examples")}set examples(e){this.set("examples",e)}get encoding(){return this.get("encoding")}set encoding(e){this.set("encoding",e)}}const ya=ga;class va extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="oAuthFlow"}get authorizationUrl(){return this.get("authorizationUrl")}set authorizationUrl(e){this.set("authorizationUrl",e)}get tokenUrl(){return this.get("tokenUrl")}set tokenUrl(e){this.set("tokenUrl",e)}get refreshUrl(){return this.get("refreshUrl")}set refreshUrl(e){this.set("refreshUrl",e)}get scopes(){return this.get("scopes")}set scopes(e){this.set("scopes",e)}}const ba=va;class wa extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="oAuthFlows"}get implicit(){return this.get("implicit")}set implicit(e){this.set("implicit",e)}get password(){return this.get("password")}set password(e){this.set("password",e)}get clientCredentials(){return this.get("clientCredentials")}set clientCredentials(e){this.set("clientCredentials",e)}get authorizationCode(){return this.get("authorizationCode")}set authorizationCode(e){this.set("authorizationCode",e)}}const Ea=wa;class xa extends Pt.RP{constructor(e,t,n){super(e,t,n),this.element="openapi",this.classes.push("spec-version"),this.classes.push("version")}}const Sa=xa;class _a extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="openApi3_0",this.classes.push("api")}get openapi(){return this.get("openapi")}set openapi(e){this.set("openapi",e)}get info(){return this.get("info")}set info(e){this.set("info",e)}get servers(){return this.get("servers")}set servers(e){this.set("servers",e)}get paths(){return this.get("paths")}set paths(e){this.set("paths",e)}get components(){return this.get("components")}set components(e){this.set("components",e)}get security(){return this.get("security")}set security(e){this.set("security",e)}get tags(){return this.get("tags")}set tags(e){this.set("tags",e)}get externalDocs(){return this.get("externalDocs")}set externalDocs(e){this.set("externalDocs",e)}}const ja=_a;class Oa extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="operation"}get tags(){return this.get("tags")}set tags(e){this.set("tags",e)}get summary(){return this.get("summary")}set summary(e){this.set("summary",e)}get description(){return this.get("description")}set description(e){this.set("description",e)}set externalDocs(e){this.set("externalDocs",e)}get externalDocs(){return this.get("externalDocs")}get operationId(){return this.get("operationId")}set operationId(e){this.set("operationId",e)}get parameters(){return this.get("parameters")}set parameters(e){this.set("parameters",e)}get requestBody(){return this.get("requestBody")}set requestBody(e){this.set("requestBody",e)}get responses(){return this.get("responses")}set responses(e){this.set("responses",e)}get callbacks(){return this.get("callbacks")}set callbacks(e){this.set("callbacks",e)}get deprecated(){return this.hasKey("deprecated")?this.get("deprecated"):new Pt.hh(!1)}set deprecated(e){this.set("deprecated",e)}get security(){return this.get("security")}set security(e){this.set("security",e)}get servers(){return this.get("severs")}set servers(e){this.set("servers",e)}}const ka=Oa;class Aa extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="parameter"}get name(){return this.get("name")}set name(e){this.set("name",e)}get in(){return this.get("in")}set in(e){this.set("in",e)}get required(){return this.hasKey("required")?this.get("required"):new Pt.hh(!1)}set required(e){this.set("required",e)}get deprecated(){return this.hasKey("deprecated")?this.get("deprecated"):new Pt.hh(!1)}set deprecated(e){this.set("deprecated",e)}get allowEmptyValue(){return this.get("allowEmptyValue")}set allowEmptyValue(e){this.set("allowEmptyValue",e)}get style(){return this.get("style")}set style(e){this.set("style",e)}get explode(){return this.get("explode")}set explode(e){this.set("explode",e)}get allowReserved(){return this.get("allowReserved")}set allowReserved(e){this.set("allowReserved",e)}get schema(){return this.get("schema")}set schema(e){this.set("schema",e)}get example(){return this.get("example")}set example(e){this.set("example",e)}get examples(){return this.get("examples")}set examples(e){this.set("examples",e)}get contentProp(){return this.get("content")}set contentProp(e){this.set("content",e)}}Object.defineProperty(Aa.prototype,"description",{get(){return this.get("description")},set(e){this.set("description",e)},enumerable:!0});const Ca=Aa;class Pa extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="pathItem"}get $ref(){return this.get("$ref")}set $ref(e){this.set("$ref",e)}get summary(){return this.get("summary")}set summary(e){this.set("summary",e)}get description(){return this.get("description")}set description(e){this.set("description",e)}get GET(){return this.get("get")}set GET(e){this.set("GET",e)}get PUT(){return this.get("put")}set PUT(e){this.set("PUT",e)}get POST(){return this.get("post")}set POST(e){this.set("POST",e)}get DELETE(){return this.get("delete")}set DELETE(e){this.set("DELETE",e)}get OPTIONS(){return this.get("options")}set OPTIONS(e){this.set("OPTIONS",e)}get HEAD(){return this.get("head")}set HEAD(e){this.set("HEAD",e)}get PATCH(){return this.get("patch")}set PATCH(e){this.set("PATCH",e)}get TRACE(){return this.get("trace")}set TRACE(e){this.set("TRACE",e)}get servers(){return this.get("servers")}set servers(e){this.set("servers",e)}get parameters(){return this.get("parameters")}set parameters(e){this.set("parameters",e)}}const Na=Pa;class Ia extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="paths"}}const Ta=Ia;class Ra extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="reference",this.classes.push("openapi-reference")}get $ref(){return this.get("$ref")}set $ref(e){this.set("$ref",e)}}const Ma=Ra;class Da extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="requestBody"}get description(){return this.get("description")}set description(e){this.set("description",e)}get contentProp(){return this.get("content")}set contentProp(e){this.set("content",e)}get required(){return this.hasKey("required")?this.get("required"):new Pt.hh(!1)}set required(e){this.set("required",e)}}const Fa=Da;class La extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="response"}get description(){return this.get("description")}set description(e){this.set("description",e)}get headers(){return this.get("headers")}set headers(e){this.set("headers",e)}get contentProp(){return this.get("content")}set contentProp(e){this.set("content",e)}get links(){return this.get("links")}set links(e){this.set("links",e)}}const Ba=La;class $a extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="responses"}get default(){return this.get("default")}set default(e){this.set("default",e)}}const qa=$a;class Ua extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="JSONSchemaDraft4"}get idProp(){return this.get("id")}set idProp(e){this.set("id",e)}get $schema(){return this.get("$schema")}set $schema(e){this.set("idProp",e)}get multipleOf(){return this.get("multipleOf")}set multipleOf(e){this.set("multipleOf",e)}get maximum(){return this.get("maximum")}set maximum(e){this.set("maximum",e)}get exclusiveMaximum(){return this.get("exclusiveMaximum")}set exclusiveMaximum(e){this.set("exclusiveMaximum",e)}get minimum(){return this.get("minimum")}set minimum(e){this.set("minimum",e)}get exclusiveMinimum(){return this.get("exclusiveMinimum")}set exclusiveMinimum(e){this.set("exclusiveMinimum",e)}get maxLength(){return this.get("maxLength")}set maxLength(e){this.set("maxLength",e)}get minLength(){return this.get("minLength")}set minLength(e){this.set("minLength",e)}get pattern(){return this.get("pattern")}set pattern(e){this.set("pattern",e)}get additionalItems(){return this.get("additionalItems")}set additionalItems(e){this.set("additionalItems",e)}get items(){return this.get("items")}set items(e){this.set("items",e)}get maxItems(){return this.get("maxItems")}set maxItems(e){this.set("maxItems",e)}get minItems(){return this.get("minItems")}set minItems(e){this.set("minItems",e)}get uniqueItems(){return this.get("uniqueItems")}set uniqueItems(e){this.set("uniqueItems",e)}get maxProperties(){return this.get("maxProperties")}set maxProperties(e){this.set("maxProperties",e)}get minProperties(){return this.get("minProperties")}set minProperties(e){this.set("minProperties",e)}get required(){return this.get("required")}set required(e){this.set("required",e)}get properties(){return this.get("properties")}set properties(e){this.set("properties",e)}get additionalProperties(){return this.get("additionalProperties")}set additionalProperties(e){this.set("additionalProperties",e)}get patternProperties(){return this.get("patternProperties")}set patternProperties(e){this.set("patternProperties",e)}get dependencies(){return this.get("dependencies")}set dependencies(e){this.set("dependencies",e)}get enum(){return this.get("enum")}set enum(e){this.set("enum",e)}get type(){return this.get("type")}set type(e){this.set("type",e)}get allOf(){return this.get("allOf")}set allOf(e){this.set("allOf",e)}get anyOf(){return this.get("anyOf")}set anyOf(e){this.set("anyOf",e)}get oneOf(){return this.get("oneOf")}set oneOf(e){this.set("oneOf",e)}get not(){return this.get("not")}set not(e){this.set("not",e)}get definitions(){return this.get("definitions")}set definitions(e){this.set("definitions",e)}get title(){return this.get("title")}set title(e){this.set("title",e)}get description(){return this.get("description")}set description(e){this.set("description",e)}get default(){return this.get("default")}set default(e){this.set("default",e)}get format(){return this.get("format")}set format(e){this.set("format",e)}get base(){return this.get("base")}set base(e){this.set("base",e)}get links(){return this.get("links")}set links(e){this.set("links",e)}get media(){return this.get("media")}set media(e){this.set("media",e)}get readOnly(){return this.get("readOnly")}set readOnly(e){this.set("readOnly",e)}}const za=Ua;class Va extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="JSONReference",this.classes.push("json-reference")}get $ref(){return this.get("$ref")}set $ref(e){this.set("$ref",e)}}const Wa=Va;class Ja extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="media"}get binaryEncoding(){return this.get("binaryEncoding")}set binaryEncoding(e){this.set("binaryEncoding",e)}get type(){return this.get("type")}set type(e){this.set("type",e)}}const Ka=Ja;class Ha extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.element="linkDescription"}get href(){return this.get("href")}set href(e){this.set("href",e)}get rel(){return this.get("rel")}set rel(e){this.set("rel",e)}get title(){return this.get("title")}set title(e){this.set("title",e)}get targetSchema(){return this.get("targetSchema")}set targetSchema(e){this.set("targetSchema",e)}get mediaType(){return this.get("mediaType")}set mediaType(e){this.set("mediaType",e)}get method(){return this.get("method")}set method(e){this.set("method",e)}get encType(){return this.get("encType")}set encType(e){this.set("encType",e)}get schema(){return this.get("schema")}set schema(e){this.set("schema",e)}}const Ga=Ha,Za=(e,t)=>{const n=kr(e,t);return po((e=>{if($s(e)&&Hr("$ref",e)&&_o(Xs,"$ref",e)){const t=uo(["$ref"],e),r=qi("#/",t);return uo(r.split("/"),n)}return $s(e)?Za(e,n):e}),e)},Ya=Ys({props:{element:null},methods:{copyMetaAndAttributes(e,t){Cs(e)&&t.meta.set("sourceMap",e.meta.get("sourceMap"))}}}),Xa=Ya,Qa=Ys(Xa,{methods:{enter(e){return this.element=e.clone(),ei}}});const el=Hn($o());function tl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}const nl=e=>{if(ds(e))return`${e.element.charAt(0).toUpperCase()+e.element.slice(1)}Element`},rl=function(e){for(var t=1;t{if(ms(r)&&n.includes(r.toValue())&&!this.ignoredFields.includes(r.toValue())){const n=this.toRefractedElement([...t,"fixedFields",r.toValue()],e),s=new Pt.c6(r.clone(),n);this.copyMetaAndAttributes(o,s),s.classes.push("fixed-field"),this.element.content.push(s)}else this.ignoredFields.includes(r.toValue())||this.element.content.push(o.clone())})),this.copyMetaAndAttributes(e,this.element),ei}}}),ll=al,cl=Ys(ll,Qa,{props:{specPath:Hn(["document","objects","JSONSchema"])},init(){this.element=new za}}),ul=Qa,pl=Qa,hl=Qa,fl=Qa,dl=Qa,ml=Qa,gl=Qa,yl=Qa,vl=Qa,bl=Qa,wl=Ys({props:{parent:null},init({parent:e=this.parent}){this.parent=e,this.passingOptionsNames=[...this.passingOptionsNames,"parent"]}}),El=e=>bs(e)&&e.hasKey("$ref"),xl=Ys(il,wl,Qa,{methods:{ObjectElement(e){const t=El(e)?["document","objects","JSONReference"]:["document","objects","JSONSchema"];return this.element=this.toRefractedElement(t,e),ei},ArrayElement(e){return this.element=new Pt.ON,this.element.classes.push("json-schema-items"),e.forEach((e=>{const t=El(e)?["document","objects","JSONReference"]:["document","objects","JSONSchema"],n=this.toRefractedElement(t,e);this.element.push(n)})),this.copyMetaAndAttributes(e,this.element),ei}}}),Sl=Qa,_l=Qa,jl=Qa,Ol=Qa,kl=Qa,Al=Ys(Qa,{methods:{ArrayElement(e){return this.element=e.clone(),this.element.classes.push("json-schema-required"),ei}}});const Cl=pr(Zt(1,cr(Ts,Ur(Ms,ts))));const Pl=pr(so);const Nl=Kn([Xs,Cl,Pl]),Il=Ys(il,{props:{fieldPatternPredicate:Mt,specPath:el,ignoredFields:[]},init({specPath:e=this.specPath,ignoredFields:t=this.ignoredFields}={}){this.specPath=e,this.ignoredFields=t},methods:{ObjectElement(e){return e.forEach(((e,t,n)=>{if(!this.ignoredFields.includes(t.toValue())&&this.fieldPatternPredicate(t.toValue())){const r=this.specPath(e),o=this.toRefractedElement(r,e),s=new Pt.c6(t.clone(),o);this.copyMetaAndAttributes(n,s),s.classes.push("patterned-field"),this.element.content.push(s)}else this.ignoredFields.includes(t.toValue())||this.element.content.push(n.clone())})),this.copyMetaAndAttributes(e,this.element),ei}}}),Tl=Ys(Il,{props:{fieldPatternPredicate:Nl}}),Rl=Ys(Tl,wl,Qa,{props:{specPath:e=>El(e)?["document","objects","JSONReference"]:["document","objects","JSONSchema"]},init(){this.element=new Pt.Sb,this.element.classes.push("json-schema-properties")}}),Ml=Ys(Tl,wl,Qa,{props:{specPath:e=>El(e)?["document","objects","JSONReference"]:["document","objects","JSONSchema"]},init(){this.element=new Pt.Sb,this.element.classes.push("json-schema-patternProperties")}}),Dl=Ys(Tl,wl,Qa,{props:{specPath:e=>El(e)?["document","objects","JSONReference"]:["document","objects","JSONSchema"]},init(){this.element=new Pt.Sb,this.element.classes.push("json-schema-dependencies")}}),Fl=Ys(Qa,{methods:{ArrayElement(e){return this.element=e.clone(),this.element.classes.push("json-schema-enum"),ei}}}),Ll=Ys(Qa,{methods:{StringElement(e){return this.element=e.clone(),this.element.classes.push("json-schema-type"),ei},ArrayElement(e){return this.element=e.clone(),this.element.classes.push("json-schema-type"),ei}}}),Bl=Ys(il,wl,Qa,{init(){this.element=new Pt.ON,this.element.classes.push("json-schema-allOf")},methods:{ArrayElement(e){return e.forEach((e=>{const t=El(e)?["document","objects","JSONReference"]:["document","objects","JSONSchema"],n=this.toRefractedElement(t,e);this.element.push(n)})),this.copyMetaAndAttributes(e,this.element),ei}}}),$l=Ys(il,wl,Qa,{init(){this.element=new Pt.ON,this.element.classes.push("json-schema-anyOf")},methods:{ArrayElement(e){return e.forEach((e=>{const t=El(e)?["document","objects","JSONReference"]:["document","objects","JSONSchema"],n=this.toRefractedElement(t,e);this.element.push(n)})),this.copyMetaAndAttributes(e,this.element),ei}}}),ql=Ys(il,wl,Qa,{init(){this.element=new Pt.ON,this.element.classes.push("json-schema-oneOf")},methods:{ArrayElement(e){return e.forEach((e=>{const t=El(e)?["document","objects","JSONReference"]:["document","objects","JSONSchema"],n=this.toRefractedElement(t,e);this.element.push(n)})),this.copyMetaAndAttributes(e,this.element),ei}}}),Ul=Ys(Tl,wl,Qa,{props:{specPath:e=>El(e)?["document","objects","JSONReference"]:["document","objects","JSONSchema"]},init(){this.element=new Pt.Sb,this.element.classes.push("json-schema-definitions")}}),zl=Qa,Vl=Qa,Wl=Qa,Jl=Qa,Kl=Qa,Hl=Ys(il,wl,Qa,{init(){this.element=new Pt.ON,this.element.classes.push("json-schema-links")},methods:{ArrayElement(e){return e.forEach((e=>{const t=this.toRefractedElement(["document","objects","LinkDescription"],e);this.element.push(t)})),this.copyMetaAndAttributes(e,this.element),ei}}}),Gl=Qa,Zl=Ys(ll,Qa,{props:{specPath:Hn(["document","objects","JSONReference"])},init(){this.element=new Wa},methods:{ObjectElement(e){const t=ll.compose.methods.ObjectElement.call(this,e);return ms(this.element.$ref)&&this.element.classes.push("reference-element"),t}}}),Yl=Ys(Qa,{methods:{StringElement(e){return this.element=e.clone(),this.element.classes.push("reference-value"),ei}}});const Xl=pr(rr);const Ql=cr(rs,Pl);function ec(e){return function(e){if(Array.isArray(e))return tc(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return tc(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return tc(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function tc(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);nt.length}))),Zr,Tn("length")),rc=Or((function(e,t,n){var r=n.apply(void 0,ec(e));return Xl(r)?Ao(r):t}));const oc=to(Ql,(function(e){var t=nc(e);return Zt(t,(function(){for(var t=arguments.length,n=new Array(t),r=0;rto(e,Hn(t),$o))),n=oc(t)(e);return this.element=this.toRefractedElement(n,e),ei}}}),ic=Ys(sc,{props:{alternator:[{predicate:El,specPath:["document","objects","JSONReference"]},{predicate:Dt,specPath:["document","objects","JSONSchema"]}]}}),ac={visitors:{value:Qa,JSONSchemaOrJSONReferenceVisitor:ic,document:{objects:{JSONSchema:{$visitor:cl,fixedFields:{id:ul,$schema:pl,multipleOf:hl,maximum:fl,exclusiveMaximum:dl,minimum:ml,exclusiveMinimum:gl,maxLength:yl,minLength:vl,pattern:bl,additionalItems:ic,items:xl,maxItems:Sl,minItems:_l,uniqueItems:jl,maxProperties:Ol,minProperties:kl,required:Al,properties:Rl,additionalProperties:ic,patternProperties:Ml,dependencies:Dl,enum:Fl,type:Ll,allOf:Bl,anyOf:$l,oneOf:ql,not:ic,definitions:Ul,title:zl,description:Vl,default:Wl,format:Jl,base:Kl,links:Hl,media:{$ref:"#/visitors/document/objects/Media"},readOnly:Gl}},JSONReference:{$visitor:Zl,fixedFields:{$ref:Yl}},Media:{$visitor:Ys(ll,Qa,{props:{specPath:Hn(["document","objects","Media"])},init(){this.element=new Ka}}),fixedFields:{binaryEncoding:Qa,type:Qa}},LinkDescription:{$visitor:Ys(ll,Qa,{props:{specPath:Hn(["document","objects","LinkDescription"])},init(){this.element=new Ga}}),fixedFields:{href:Qa,rel:Qa,title:Qa,targetSchema:ic,mediaType:Qa,method:Qa,encType:Qa,schema:ic}}}}}},lc=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof za||e(r)&&t("JSONSchemaDraft4",r)&&n("object",r))),cc=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Wa||e(r)&&t("JSONReference",r)&&n("object",r))),uc=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Ka||e(r)&&t("media",r)&&n("object",r))),pc=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Ga||e(r)&&t("linkDescription",r)&&n("object",r))),hc={namespace:e=>{const{base:t}=e;return t.register("jSONSchemaDraft4",za),t.register("jSONReference",Wa),t.register("media",Ka),t.register("linkDescription",Ga),t}};function fc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function dc(e){for(var t=1;t{const e=zs(hc);return{predicates:dc(dc({},i),{},{isStringElement:ms}),namespace:e}};function gc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}const yc=(e,{specPath:t=["visitors","document","objects","JSONSchema","$visitor"],plugins:n=[],specificationObj:r=ac}={})=>{const o=(0,Pt.Qc)(e),s=Za(r),i=is(t,[],s);return fi(o,i,{state:{specObj:s}}),di(i.element,n,{toolboxCreator:mc,visitorOptions:{keyMap:rl,nodeTypeGetter:nl}})},vc=e=>(t,n={})=>yc(t,function(e){for(var t=1;t{if(ds(e))return`${e.element.charAt(0).toUpperCase()+e.element.slice(1)}Element`},Dc=function(e){for(var t=1;tbs(e)&&e.hasKey("openapi")&&e.hasKey("info"),qc=e=>bs(e)&&e.hasKey("name")&&e.hasKey("in"),Uc=e=>bs(e)&&e.hasKey("$ref"),zc=e=>bs(e)&&e.hasKey("content"),Vc=e=>bs(e)&&e.hasKey("description"),Wc=bs,Jc=bs,Kc=e=>ms(e.key)&&To("x-",e.key.toValue()),Hc=Ys(Bc,{props:{specPath:el,ignoredFields:[],canSupportSpecificationExtensions:!0,specificationExtensionPredicate:Kc},init({specPath:e=this.specPath,ignoredFields:t=this.ignoredFields,canSupportSpecificationExtensions:n=this.canSupportSpecificationExtensions,specificationExtensionPredicate:r=this.specificationExtensionPredicate}={}){this.specPath=e,this.ignoredFields=t,this.canSupportSpecificationExtensions=n,this.specificationExtensionPredicate=r},methods:{ObjectElement(e){const t=this.specPath(e),n=this.retrieveFixedFields(t);return e.forEach(((e,r,o)=>{if(ms(r)&&n.includes(r.toValue())&&!this.ignoredFields.includes(r.toValue())){const n=this.toRefractedElement([...t,"fixedFields",r.toValue()],e),s=new Pt.c6(r.clone(),n);this.copyMetaAndAttributes(o,s),s.classes.push("fixed-field"),this.element.content.push(s)}else if(this.canSupportSpecificationExtensions&&this.specificationExtensionPredicate(o)){const e=this.toRefractedElement(["document","extension"],o);this.element.content.push(e)}else this.ignoredFields.includes(r.toValue())||this.element.content.push(o.clone())})),this.copyMetaAndAttributes(e,this.element),ei}}}),Gc=Hc,Zc=Ys(Tc,{methods:{enter(e){return this.element=e.clone(),ei}}}),Yc=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","OpenApi"]),canSupportSpecificationExtensions:!0},init(){this.element=new ja},methods:{ObjectElement(e){return this.unrefractedElement=e,Gc.compose.methods.ObjectElement.call(this,e)}}}),Xc=Ys(Bc,Zc,{methods:{StringElement(e){const t=new Sa(e.toValue());return this.copyMetaAndAttributes(e,t),this.element=t,ei}}}),Qc=Ys(Bc,{methods:{MemberElement(e){return this.element=e.clone(),this.element.classes.push("specification-extension"),ei}}}),eu=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","Info"]),canSupportSpecificationExtensions:!0},init(){this.element=new pa}}),tu=Zc,nu=Zc,ru=Zc,ou=Ys(Zc,{methods:{StringElement(e){return this.element=e.clone(),this.element.classes.push("api-version"),this.element.classes.push("version"),ei}}}),su=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","Contact"]),canSupportSpecificationExtensions:!0},init(){this.element=new Qi}}),iu=Zc,au=Zc,lu=Zc,cu=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","License"]),canSupportSpecificationExtensions:!0},init(){this.element=new fa}}),uu=Zc,pu=Zc,hu=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","Link"]),canSupportSpecificationExtensions:!0},init(){this.element=new ma},methods:{ObjectElement(e){const t=Gc.compose.methods.ObjectElement.call(this,e);return(ms(this.element.operationId)||ms(this.element.operationRef))&&this.element.classes.push("reference-element"),t}}}),fu=Ys(Zc,{methods:{StringElement(e){return this.element=e.clone(),this.element.classes.push("reference-value"),ei}}}),du=Ys(Zc,{methods:{StringElement(e){return this.element=e.clone(),this.element.classes.push("reference-value"),ei}}}),mu=Ys(Bc,{props:{fieldPatternPredicate:Mt,specPath:el,ignoredFields:[],canSupportSpecificationExtensions:!1,specificationExtensionPredicate:Kc},init({specPath:e=this.specPath,ignoredFields:t=this.ignoredFields,canSupportSpecificationExtensions:n=this.canSupportSpecificationExtensions,specificationExtensionPredicate:r=this.specificationExtensionPredicate}={}){this.specPath=e,this.ignoredFields=t,this.canSupportSpecificationExtensions=n,this.specificationExtensionPredicate=r},methods:{ObjectElement(e){return e.forEach(((e,t,n)=>{if(this.canSupportSpecificationExtensions&&this.specificationExtensionPredicate(n)){const e=this.toRefractedElement(["document","extension"],n);this.element.content.push(e)}else if(!this.ignoredFields.includes(t.toValue())&&this.fieldPatternPredicate(t.toValue())){const r=this.specPath(e),o=this.toRefractedElement(r,e),s=new Pt.c6(t.clone(),o);this.copyMetaAndAttributes(n,s),s.classes.push("patterned-field"),this.element.content.push(s)}else this.ignoredFields.includes(t.toValue())||this.element.content.push(n.clone())})),this.copyMetaAndAttributes(e,this.element),ei}}}),gu=mu,yu=Ys(gu,{props:{fieldPatternPredicate:Nl}});class vu extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(vu.primaryClass)}}Xo(vu,"primaryClass","link-parameters");const bu=vu,wu=Ys(yu,Zc,{props:{specPath:Hn(["value"])},init(){this.element=new bu}}),Eu=Zc,xu=Zc,Su=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","Server"]),canSupportSpecificationExtensions:!0},init(){this.element=new jc}}),_u=Ys(Zc,{methods:{StringElement(e){return this.element=e.clone(),this.element.classes.push("server-url"),ei}}}),ju=Zc;class Ou extends Pt.ON{constructor(e,t,n){super(e,t,n),this.classes.push(Ou.primaryClass)}}Xo(Ou,"primaryClass","servers");const ku=Ou,Au=Ys(Bc,Zc,{init(){this.element=new ku},methods:{ArrayElement(e){return e.forEach((e=>{const t=Wc(e)?["document","objects","Server"]:["value"],n=this.toRefractedElement(t,e);this.element.push(n)})),this.copyMetaAndAttributes(e,this.element),ei}}}),Cu=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","ServerVariable"]),canSupportSpecificationExtensions:!0},init(){this.element=new kc}}),Pu=Zc,Nu=Zc,Iu=Zc;class Tu extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(Tu.primaryClass)}}Xo(Tu,"primaryClass","server-variables");const Ru=Tu,Mu=Ys(yu,Zc,{props:{specPath:Hn(["document","objects","ServerVariable"])},init(){this.element=new Ru}}),Du=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","MediaType"]),canSupportSpecificationExtensions:!0},init(){this.element=new ya}}),Fu=Ys(Bc,{props:{alternator:[]},methods:{enter(e){const t=this.alternator.map((({predicate:e,specPath:t})=>to(e,Hn(t),$o))),n=oc(t)(e);return this.element=this.toRefractedElement(n,e),ei}}}),Lu=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Gi||e(r)&&t("callback",r)&&n("object",r))),Bu=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Yi||e(r)&&t("components",r)&&n("object",r))),$u=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Qi||e(r)&&t("contact",r)&&n("object",r))),qu=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof sa||e(r)&&t("example",r)&&n("object",r))),Uu=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof aa||e(r)&&t("externalDocumentation",r)&&n("object",r))),zu=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof ca||e(r)&&t("header",r)&&n("object",r))),Vu=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof pa||e(r)&&t("info",r)&&n("object",r))),Wu=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof fa||e(r)&&t("license",r)&&n("object",r))),Ju=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof ma||e(r)&&t("link",r)&&n("object",r))),Ku=e=>{if(!Ju(e))return!1;if(!ms(e.operationRef))return!1;const t=e.operationRef.toValue();return"string"==typeof t&&t.length>0&&!t.startsWith("#")},Hu=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Sa||e(r)&&t("openapi",r)&&n("string",r))),Gu=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n,hasClass:r})=>o=>o instanceof ja||e(o)&&t("openApi3_0",o)&&n("object",o)&&r("api",o))),Zu=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof ka||e(r)&&t("operation",r)&&n("object",r))),Yu=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Ca||e(r)&&t("parameter",r)&&n("object",r))),Xu=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Na||e(r)&&t("pathItem",r)&&n("object",r))),Qu=e=>{if(!Xu(e))return!1;if(!ms(e.$ref))return!1;const t=e.$ref.toValue();return"string"==typeof t&&t.length>0&&!t.startsWith("#")},ep=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Ta||e(r)&&t("paths",r)&&n("object",r))),tp=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Ma||e(r)&&t("reference",r)&&n("object",r))),np=e=>{if(!tp(e))return!1;if(!ms(e.$ref))return!1;const t=e.$ref.toValue();return"string"==typeof t&&t.length>0&&!t.startsWith("#")},rp=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Fa||e(r)&&t("requestBody",r)&&n("object",r))),op=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Ba||e(r)&&t("response",r)&&n("object",r))),sp=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof qa||e(r)&&t("responses",r)&&n("object",r))),ip=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof bc||e(r)&&t("schema",r)&&n("object",r))),ap=e=>vs(e)&&e.classes.includes("boolean-json-schema"),lp=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Ec||e(r)&&t("securityRequirement",r)&&n("object",r))),cp=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof jc||e(r)&&t("server",r)&&n("object",r))),up=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof kc||e(r)&&t("serverVariable",r)&&n("object",r))),pp=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof ya||e(r)&&t("mediaType",r)&&n("object",r))),hp=Ys(Fu,Zc,{props:{alternator:[{predicate:Uc,specPath:["document","objects","Reference"]},{predicate:Dt,specPath:["document","objects","Schema"]}]},methods:{ObjectElement(e){const t=Fu.compose.methods.enter.call(this,e);return tp(this.element)&&this.element.setMetaProperty("referenced-element","schema"),t}}}),fp=Zc,dp=Ys(yu,Zc,{props:{specPath:e=>Uc(e)?["document","objects","Reference"]:["document","objects","Example"],canSupportSpecificationExtensions:!0},init(){this.element=new Pt.Sb,this.element.classes.push("examples")},methods:{ObjectElement(e){const t=yu.compose.methods.ObjectElement.call(this,e);return this.element.filter(tp).forEach((e=>{e.setMetaProperty("referenced-element","example")})),t}}});class mp extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(mp.primaryClass),this.classes.push("examples")}}Xo(mp,"primaryClass","media-type-examples");const gp=mp,yp=Ys(dp,{init(){this.element=new gp}});class vp extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(vp.primaryClass)}}Xo(vp,"primaryClass","media-type-encoding");const bp=vp,wp=Ys(yu,Zc,{props:{specPath:Hn(["document","objects","Encoding"])},init(){this.element=new bp}}),Ep=Ys(yu,Zc,{props:{specPath:Hn(["value"])},init(){this.element=new Ec}});class xp extends Pt.ON{constructor(e,t,n){super(e,t,n),this.classes.push(xp.primaryClass)}}Xo(xp,"primaryClass","security");const Sp=xp,_p=Ys(Bc,Zc,{init(){this.element=new Sp},methods:{ArrayElement(e){return e.forEach((e=>{if(bs(e)){const t=this.toRefractedElement(["document","objects","SecurityRequirement"],e);this.element.push(t)}else this.element.push(e.clone())})),this.copyMetaAndAttributes(e,this.element),ei}}}),jp=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","Components"]),canSupportSpecificationExtensions:!0},init(){this.element=new Yi}}),Op=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","Tag"]),canSupportSpecificationExtensions:!0},init(){this.element=new Cc}}),kp=Zc,Ap=Zc,Cp=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","Reference"]),canSupportSpecificationExtensions:!1},init(){this.element=new Ma},methods:{ObjectElement(e){const t=Gc.compose.methods.ObjectElement.call(this,e);return ms(this.element.$ref)&&this.element.classes.push("reference-element"),t}}}),Pp=Ys(Zc,{methods:{StringElement(e){return this.element=e.clone(),this.element.classes.push("reference-value"),ei}}}),Np=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","Parameter"]),canSupportSpecificationExtensions:!0},init(){this.element=new Ca},methods:{ObjectElement(e){const t=Gc.compose.methods.ObjectElement.call(this,e);return bs(this.element.contentProp)&&this.element.contentProp.filter(pp).forEach(((e,t)=>{e.setMetaProperty("media-type",t.toValue())})),t}}}),Ip=Zc,Tp=Zc,Rp=Zc,Mp=Zc,Dp=Zc,Fp=Zc,Lp=Zc,Bp=Zc,$p=Zc,qp=Ys(Fu,Zc,{props:{alternator:[{predicate:Uc,specPath:["document","objects","Reference"]},{predicate:Dt,specPath:["document","objects","Schema"]}]},methods:{ObjectElement(e){const t=Fu.compose.methods.enter.call(this,e);return tp(this.element)&&this.element.setMetaProperty("referenced-element","schema"),t}}}),Up=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","Header"]),canSupportSpecificationExtensions:!0},init(){this.element=new ca}}),zp=Zc,Vp=Zc,Wp=Zc,Jp=Zc,Kp=Zc,Hp=Zc,Gp=Zc,Zp=Ys(Fu,Zc,{props:{alternator:[{predicate:Uc,specPath:["document","objects","Reference"]},{predicate:Dt,specPath:["document","objects","Schema"]}]},methods:{ObjectElement(e){const t=Fu.compose.methods.enter.call(this,e);return tp(this.element)&&this.element.setMetaProperty("referenced-element","schema"),t}}}),Yp=Zc;class Xp extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(Xp.primaryClass),this.classes.push("examples")}}Xo(Xp,"primaryClass","header-examples");const Qp=Xp,eh=Ys(dp,{init(){this.element=new Qp}}),th=Ys(yu,Zc,{props:{specPath:Hn(["document","objects","MediaType"])},init(){this.element=new Pt.Sb,this.element.classes.push("content")}});class nh extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(nh.primaryClass),this.classes.push("content")}}Xo(nh,"primaryClass","header-content");const rh=nh,oh=Ys(th,{init(){this.element=new rh}}),sh=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","Schema"]),canSupportSpecificationExtensions:!0},init(){this.element=new bc}}),{items:ih}=ac.visitors.document.objects.JSONSchema.fixedFields,ah=Ys(ih,{methods:{ObjectElement(e){const t=ih.compose.methods.ObjectElement.call(this,e);return tp(this.element)&&this.element.setMetaProperty("referenced-element","schema"),t},ArrayElement(e){return this.element=e.clone(),ei}}}),{properties:lh}=ac.visitors.document.objects.JSONSchema.fixedFields,ch=Ys(lh,{methods:{ObjectElement(e){const t=lh.compose.methods.ObjectElement.call(this,e);return this.element.filter(tp).forEach((e=>{e.setMetaProperty("referenced-element","schema")})),t}}}),{type:uh}=ac.visitors.document.objects.JSONSchema.fixedFields,ph=Ys(uh,{methods:{ArrayElement(e){return this.element=e.clone(),ei}}}),hh=Zc,fh=Zc,dh=Zc,mh=Zc,{JSONSchemaOrJSONReferenceVisitor:gh}=ac.visitors,yh=Ys(gh,{methods:{ObjectElement(e){const t=gh.compose.methods.enter.call(this,e);return tp(this.element)&&this.element.setMetaProperty("referenced-element","schema"),t}}}),vh=Object.fromEntries(Object.entries(ac.visitors.document.objects.JSONSchema.fixedFields).map((([e,t])=>t===ac.visitors.JSONSchemaOrJSONReferenceVisitor?[e,yh]:[e,t]))),bh=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","Discriminator"]),canSupportSpecificationExtensions:!1},init(){this.element=new ta}}),wh=Zc;class Eh extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(Eh.primaryClass)}}Xo(Eh,"primaryClass","discriminator-mapping");const xh=Eh,Sh=Ys(yu,Zc,{props:{specPath:Hn(["value"])},init(){this.element=new xh}}),_h=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","XML"]),canSupportSpecificationExtensions:!0},init(){this.element=new Nc}}),jh=Zc,Oh=Zc,kh=Zc,Ah=Zc,Ch=Zc,Ph=Zc;class Nh extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(Nh.primaryClass),this.classes.push("examples")}}Xo(Nh,"primaryClass","parameter-examples");const Ih=Nh,Th=Ys(dp,{init(){this.element=new Ih}});class Rh extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(Rh.primaryClass),this.classes.push("content")}}Xo(Rh,"primaryClass","parameter-content");const Mh=Rh,Dh=Ys(th,{init(){this.element=new Mh}});class Fh extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(Fh.primaryClass)}}Xo(Fh,"primaryClass","components-schemas");const Lh=Fh,Bh=Ys(yu,Zc,{props:{specPath:e=>Uc(e)?["document","objects","Reference"]:["document","objects","Schema"]},init(){this.element=new Lh},methods:{ObjectElement(e){const t=yu.compose.methods.ObjectElement.call(this,e);return this.element.filter(tp).forEach((e=>{e.setMetaProperty("referenced-element","schema")})),t}}});class $h extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push($h.primaryClass)}}Xo($h,"primaryClass","components-responses");const qh=$h,Uh=Ys(yu,Zc,{props:{specPath:e=>Uc(e)?["document","objects","Reference"]:["document","objects","Response"]},init(){this.element=new qh},methods:{ObjectElement(e){const t=yu.compose.methods.ObjectElement.call(this,e);return this.element.filter(tp).forEach((e=>{e.setMetaProperty("referenced-element","response")})),this.element.filter(op).forEach(((e,t)=>{e.setMetaProperty("http-status-code",t.toValue())})),t}}}),zh=Uh;class Vh extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(Vh.primaryClass),this.classes.push("parameters")}}Xo(Vh,"primaryClass","components-parameters");const Wh=Vh,Jh=Ys(yu,Zc,{props:{specPath:e=>Uc(e)?["document","objects","Reference"]:["document","objects","Parameter"]},init(){this.element=new Wh},methods:{ObjectElement(e){const t=yu.compose.methods.ObjectElement.call(this,e);return this.element.filter(tp).forEach((e=>{e.setMetaProperty("referenced-element","parameter")})),t}}});class Kh extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(Kh.primaryClass),this.classes.push("examples")}}Xo(Kh,"primaryClass","components-examples");const Hh=Kh,Gh=Ys(yu,Zc,{props:{specPath:e=>Uc(e)?["document","objects","Reference"]:["document","objects","Example"]},init(){this.element=new Hh},methods:{ObjectElement(e){const t=yu.compose.methods.ObjectElement.call(this,e);return this.element.filter(tp).forEach((e=>{e.setMetaProperty("referenced-element","example")})),t}}});class Zh extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(Zh.primaryClass)}}Xo(Zh,"primaryClass","components-request-bodies");const Yh=Zh,Xh=Ys(yu,Zc,{props:{specPath:e=>Uc(e)?["document","objects","Reference"]:["document","objects","RequestBody"]},init(){this.element=new Yh},methods:{ObjectElement(e){const t=yu.compose.methods.ObjectElement.call(this,e);return this.element.filter(tp).forEach((e=>{e.setMetaProperty("referenced-element","requestBody")})),t}}});class Qh extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(Qh.primaryClass)}}Xo(Qh,"primaryClass","components-headers");const ef=Qh,tf=Ys(yu,Zc,{props:{specPath:e=>Uc(e)?["document","objects","Reference"]:["document","objects","Header"]},init(){this.element=new ef},methods:{ObjectElement(e){const t=yu.compose.methods.ObjectElement.call(this,e);return this.element.filter(tp).forEach((e=>{e.setMetaProperty("referenced-element","header")})),this.element.filter(zu).forEach(((e,t)=>{e.setMetaProperty("header-name",t.toValue())})),t}}}),nf=tf;class rf extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(rf.primaryClass)}}Xo(rf,"primaryClass","components-security-schemes");const of=rf,sf=Ys(yu,Zc,{props:{specPath:e=>Uc(e)?["document","objects","Reference"]:["document","objects","SecurityScheme"]},init(){this.element=new of},methods:{ObjectElement(e){const t=yu.compose.methods.ObjectElement.call(this,e);return this.element.filter(tp).forEach((e=>{e.setMetaProperty("referenced-element","securityScheme")})),t}}});class af extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(af.primaryClass)}}Xo(af,"primaryClass","components-links");const lf=af,cf=Ys(yu,Zc,{props:{specPath:e=>Uc(e)?["document","objects","Reference"]:["document","objects","Link"]},init(){this.element=new lf},methods:{ObjectElement(e){const t=yu.compose.methods.ObjectElement.call(this,e);return this.element.filter(tp).forEach((e=>{e.setMetaProperty("referenced-element","link")})),t}}});class uf extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(uf.primaryClass)}}Xo(uf,"primaryClass","components-callbacks");const pf=uf,hf=Ys(yu,Zc,{props:{specPath:e=>Uc(e)?["document","objects","Reference"]:["document","objects","Callback"]},init(){this.element=new pf},methods:{ObjectElement(e){const t=yu.compose.methods.ObjectElement.call(this,e);return this.element.filter(tp).forEach((e=>{e.setMetaProperty("referenced-element","callback")})),t}}}),ff=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","Example"]),canSupportSpecificationExtensions:!0},init(){this.element=new sa},methods:{ObjectElement(e){const t=Gc.compose.methods.ObjectElement.call(this,e);return ms(this.element.externalValue)&&this.element.classes.push("reference-element"),t}}}),df=Zc,mf=Zc,gf=Zc,yf=Ys(Zc,{methods:{StringElement(e){return this.element=e.clone(),this.element.classes.push("reference-value"),ei}}}),vf=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","ExternalDocumentation"]),canSupportSpecificationExtensions:!0},init(){this.element=new aa}}),bf=Zc,wf=Zc,Ef=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","Encoding"]),canSupportSpecificationExtensions:!0},init(){this.element=new ra},methods:{ObjectElement(e){const t=Gc.compose.methods.ObjectElement.call(this,e);return bs(this.element.headers)&&this.element.headers.filter(zu).forEach(((e,t)=>{e.setMetaProperty("header-name",t.toValue())})),t}}}),xf=Zc;class Sf extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(Sf.primaryClass)}}Xo(Sf,"primaryClass","encoding-headers");const _f=Sf,jf=Ys(yu,Zc,{props:{specPath:e=>Uc(e)?["document","objects","Reference"]:["document","objects","Header"]},init(){this.element=new _f},methods:{ObjectElement(e){const t=yu.compose.methods.ObjectElement.call(this,e);return this.element.filter(tp).forEach((e=>{e.setMetaProperty("referenced-element","header")})),this.element.forEach(((e,t)=>{if(!zu(e))return;const n=t.toValue();e.setMetaProperty("headerName",n)})),t}}}),Of=jf,kf=Zc,Af=Zc,Cf=Zc,Pf=Ys(gu,Zc,{props:{fieldPatternPredicate:Ro(/^\/(?.*)$/),specPath:Hn(["document","objects","PathItem"]),canSupportSpecificationExtensions:!0},init(){this.element=new Ta},methods:{ObjectElement(e){const t=gu.compose.methods.ObjectElement.call(this,e);return this.element.filter(Xu).forEach(((e,t)=>{e.setMetaProperty("path",t.clone())})),t}}}),Nf=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","RequestBody"])},init(){this.element=new Fa},methods:{ObjectElement(e){const t=Gc.compose.methods.ObjectElement.call(this,e);return bs(this.element.contentProp)&&this.element.contentProp.filter(pp).forEach(((e,t)=>{e.setMetaProperty("media-type",t.toValue())})),t}}}),If=Zc;class Tf extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(Tf.primaryClass),this.classes.push("content")}}Xo(Tf,"primaryClass","request-body-content");const Rf=Tf,Mf=Ys(th,{init(){this.element=new Rf}}),Df=Zc,Ff=Ys(gu,Zc,{props:{fieldPatternPredicate:Ro(/{(?.*)}/),specPath:Hn(["document","objects","PathItem"]),canSupportSpecificationExtensions:!0},init(){this.element=new Gi},methods:{ObjectElement(e){const t=yu.compose.methods.ObjectElement.call(this,e);return this.element.filter(Xu).forEach(((e,t)=>{e.setMetaProperty("runtime-expression",t.toValue())})),t}}}),Lf=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","Response"])},init(){this.element=new Ba},methods:{ObjectElement(e){const t=Gc.compose.methods.ObjectElement.call(this,e);return bs(this.element.contentProp)&&this.element.contentProp.filter(pp).forEach(((e,t)=>{e.setMetaProperty("media-type",t.toValue())})),bs(this.element.headers)&&this.element.headers.filter(zu).forEach(((e,t)=>{e.setMetaProperty("header-name",t.toValue())})),t}}}),Bf=Zc;class $f extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push($f.primaryClass)}}Xo($f,"primaryClass","response-headers");const qf=$f,Uf=Ys(yu,Zc,{props:{specPath:e=>Uc(e)?["document","objects","Reference"]:["document","objects","Header"]},init(){this.element=new qf},methods:{ObjectElement(e){const t=yu.compose.methods.ObjectElement.call(this,e);return this.element.filter(tp).forEach((e=>{e.setMetaProperty("referenced-element","header")})),this.element.forEach(((e,t)=>{if(!zu(e))return;const n=t.toValue();e.setMetaProperty("header-name",n)})),t}}}),zf=Uf;class Vf extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(Vf.primaryClass),this.classes.push("content")}}Xo(Vf,"primaryClass","response-content");const Wf=Vf,Jf=Ys(th,{init(){this.element=new Wf}});class Kf extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(Kf.primaryClass)}}Xo(Kf,"primaryClass","response-links");const Hf=Kf,Gf=Ys(yu,Zc,{props:{specPath:e=>Uc(e)?["document","objects","Reference"]:["document","objects","Link"]},init(){this.element=new Hf},methods:{ObjectElement(e){const t=yu.compose.methods.ObjectElement.call(this,e);return this.element.filter(tp).forEach((e=>{e.setMetaProperty("referenced-element","link")})),t}}}),Zf=Ys(Gc,gu,{props:{specPathFixedFields:el,specPathPatternedFields:el},methods:{ObjectElement(e){const{specPath:t,ignoredFields:n}=this;try{this.specPath=this.specPathFixedFields;const t=this.retrieveFixedFields(this.specPath(e));this.ignoredFields=[...n,...Pr(e.keys(),t)],Gc.compose.methods.ObjectElement.call(this,e),this.specPath=this.specPathPatternedFields,this.ignoredFields=t,gu.compose.methods.ObjectElement.call(this,e)}catch(e){throw this.specPath=t,e}return ei}}}),Yf=Ys(Zf,Zc,{props:{specPathFixedFields:Hn(["document","objects","Responses"]),specPathPatternedFields:e=>Uc(e)?["document","objects","Reference"]:["document","objects","Response"],fieldPatternPredicate:Ro(new RegExp(`^(1XX|2XX|3XX|4XX|5XX|${ko(100,600).join("|")})$`)),canSupportSpecificationExtensions:!0},init(){this.element=new qa},methods:{ObjectElement(e){const t=Zf.compose.methods.ObjectElement.call(this,e);return this.element.filter(tp).forEach((e=>{e.setMetaProperty("referenced-element","response")})),this.element.filter(op).forEach(((e,t)=>{const n=t.clone();this.fieldPatternPredicate(n.toValue())&&e.setMetaProperty("http-status-code",n)})),t}}}),Xf=Yf,Qf=Ys(Fu,Zc,{props:{alternator:[{predicate:Uc,specPath:["document","objects","Reference"]},{predicate:Dt,specPath:["document","objects","Response"]}]},methods:{ObjectElement(e){const t=Fu.compose.methods.enter.call(this,e);return tp(this.element)?this.element.setMetaProperty("referenced-element","response"):op(this.element)&&this.element.setMetaProperty("http-status-code","default"),t}}}),ed=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","Operation"])},init(){this.element=new ka}});class td extends Pt.ON{constructor(e,t,n){super(e,t,n),this.classes.push(td.primaryClass)}}Xo(td,"primaryClass","operation-tags");const nd=td,rd=Ys(Zc,{init(){this.element=new nd},methods:{ArrayElement(e){return this.element=this.element.concat(e.clone()),ei}}}),od=Zc,sd=Zc,id=Zc;class ad extends Pt.ON{constructor(e,t,n){super(e,t,n),this.classes.push(ad.primaryClass),this.classes.push("parameters")}}Xo(ad,"primaryClass","operation-parameters");const ld=ad,cd=Ys(Bc,Zc,{init(){this.element=new Pt.ON,this.element.classes.push("parameters")},methods:{ArrayElement(e){return e.forEach((e=>{const t=Uc(e)?["document","objects","Reference"]:["document","objects","Parameter"],n=this.toRefractedElement(t,e);tp(n)&&n.setMetaProperty("referenced-element","parameter"),this.element.push(n)})),this.copyMetaAndAttributes(e,this.element),ei}}}),ud=Ys(cd,{init(){this.element=new ld}}),pd=Ys(Fu,{props:{alternator:[{predicate:Uc,specPath:["document","objects","Reference"]},{predicate:Dt,specPath:["document","objects","RequestBody"]}]},methods:{ObjectElement(e){const t=Fu.compose.methods.enter.call(this,e);return tp(this.element)&&this.element.setMetaProperty("referenced-element","requestBody"),t}}});class hd extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(hd.primaryClass)}}Xo(hd,"primaryClass","operation-callbacks");const fd=hd,dd=Ys(yu,Zc,{props:{specPath:e=>Uc(e)?["document","objects","Reference"]:["document","objects","Callback"]},init(){this.element=new fd},methods:{ObjectElement(e){const t=yu.compose.methods.ObjectElement.call(this,e);return this.element.filter(tp).forEach((e=>{e.setMetaProperty("referenced-element","callback")})),t}}}),md=Zc;class gd extends Pt.ON{constructor(e,t,n){super(e,t,n),this.classes.push(gd.primaryClass),this.classes.push("security")}}Xo(gd,"primaryClass","operation-security");const yd=gd,vd=Ys(Bc,Zc,{init(){this.element=new yd},methods:{ArrayElement(e){return e.forEach((e=>{const t=bs(e)?["document","objects","SecurityRequirement"]:["value"],n=this.toRefractedElement(t,e);this.element.push(n)})),this.copyMetaAndAttributes(e,this.element),ei}}});class bd extends Pt.ON{constructor(e,t,n){super(e,t,n),this.classes.push(bd.primaryClass),this.classes.push("servers")}}Xo(bd,"primaryClass","operation-servers");const wd=bd,Ed=Ys(Au,{init(){this.element=new wd}}),xd=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","PathItem"])},init(){this.element=new Na},methods:{ObjectElement(e){const t=Gc.compose.methods.ObjectElement.call(this,e);return this.element.filter(Zu).forEach(((e,t)=>{const n=t.clone();n.content=n.toValue().toUpperCase(),e.setMetaProperty("http-method",n)})),ms(this.element.$ref)&&this.element.classes.push("reference-element"),t}}}),Sd=Ys(Zc,{methods:{StringElement(e){return this.element=e.clone(),this.element.classes.push("reference-value"),ei}}}),_d=Zc,jd=Zc;class Od extends Pt.ON{constructor(e,t,n){super(e,t,n),this.classes.push(Od.primaryClass),this.classes.push("servers")}}Xo(Od,"primaryClass","path-item-servers");const kd=Od,Ad=Ys(Au,{init(){this.element=new kd}});class Cd extends Pt.ON{constructor(e,t,n){super(e,t,n),this.classes.push(Cd.primaryClass),this.classes.push("parameters")}}Xo(Cd,"primaryClass","path-item-parameters");const Pd=Cd,Nd=Ys(cd,{init(){this.element=new Pd}}),Id=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","SecurityScheme"]),canSupportSpecificationExtensions:!0},init(){this.element=new Sc}}),Td=Zc,Rd=Zc,Md=Zc,Dd=Zc,Fd=Zc,Ld=Zc,Bd=Zc,$d=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","OAuthFlows"]),canSupportSpecificationExtensions:!0},init(){this.element=new Ea}}),qd=Ys(Gc,Zc,{props:{specPath:Hn(["document","objects","OAuthFlow"]),canSupportSpecificationExtensions:!0},init(){this.element=new ba}}),Ud=Zc,zd=Zc,Vd=Zc;class Wd extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(Wd.primaryClass)}}Xo(Wd,"primaryClass","oauth-flow-scopes");const Jd=Wd,Kd=Ys(yu,Zc,{props:{specPath:Hn(["value"])},init(){this.element=new Jd}});class Hd extends Pt.ON{constructor(e,t,n){super(e,t,n),this.classes.push(Hd.primaryClass)}}Xo(Hd,"primaryClass","tags");const Gd=Hd,Zd=Ys(Bc,Zc,{init(){this.element=new Gd},methods:{ArrayElement(e){return e.forEach((e=>{const t=Jc(e)?["document","objects","Tag"]:["value"],n=this.toRefractedElement(t,e);this.element.push(n)})),this.copyMetaAndAttributes(e,this.element),ei}}});function Yd(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Xd(e){for(var t=1;t{const{base:t}=e;return t.register("callback",Gi),t.register("components",Yi),t.register("contact",Qi),t.register("discriminator",ta),t.register("encoding",ra),t.register("example",sa),t.register("externalDocumentation",aa),t.register("header",ca),t.register("info",pa),t.register("license",fa),t.register("link",ma),t.register("mediaType",ya),t.register("oAuthFlow",ba),t.register("oAuthFlows",Ea),t.register("openapi",Sa),t.register("openApi3_0",ja),t.register("operation",ka),t.register("parameter",Ca),t.register("pathItem",Na),t.register("paths",Ta),t.register("reference",Ma),t.register("requestBody",Fa),t.register("response",Ba),t.register("responses",qa),t.register("schema",bc),t.register("securityRequirement",Ec),t.register("securityScheme",Sc),t.register("server",jc),t.register("serverVariable",kc),t.register("tag",Cc),t.register("xml",Nc),t}};function rm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function om(e){for(var t=1;t{const e=zs(nm);return{predicates:om(om(om({},a),l),{},{isStringElement:ms}),namespace:e}};function im(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}const am=(e,{specPath:t=["visitors","document","objects","OpenApi","$visitor"],plugins:n=[]}={})=>{const r=(0,Pt.Qc)(e),o=Za(tm),s=is(t,[],o);return fi(r,s,{state:{specObj:o}}),di(s.element,n,{toolboxCreator:sm,visitorOptions:{keyMap:Dc,nodeTypeGetter:Mc}})},lm=e=>(t,n={})=>am(t,function(e){for(var t=1;tr=>r instanceof cm||e(r)&&t("callback",r)&&n("object",r))),_g=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof um||e(r)&&t("components",r)&&n("object",r))),jg=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof pm||e(r)&&t("contact",r)&&n("object",r))),Og=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof dm||e(r)&&t("example",r)&&n("object",r))),kg=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof mm||e(r)&&t("externalDocumentation",r)&&n("object",r))),Ag=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof gm||e(r)&&t("header",r)&&n("object",r))),Cg=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof ym||e(r)&&t("info",r)&&n("object",r))),Pg=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof bm||e(r)&&t("jsonSchemaDialect",r)&&n("string",r))),Ng=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof wm||e(r)&&t("license",r)&&n("object",r))),Ig=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Em||e(r)&&t("link",r)&&n("object",r))),Tg=e=>{if(!Ig(e))return!1;if(!ms(e.operationRef))return!1;const t=e.operationRef.toValue();return"string"==typeof t&&t.length>0&&!t.startsWith("#")},Rg=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof jm||e(r)&&t("openapi",r)&&n("string",r))),Mg=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n,hasClass:r})=>o=>o instanceof km||e(o)&&t("openApi3_1",o)&&n("object",o)&&r("api",o))),Dg=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Am||e(r)&&t("operation",r)&&n("object",r))),Fg=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Cm||e(r)&&t("parameter",r)&&n("object",r))),Lg=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Pm||e(r)&&t("pathItem",r)&&n("object",r))),Bg=e=>{if(!Lg(e))return!1;if(!ms(e.$ref))return!1;const t=e.$ref.toValue();return"string"==typeof t&&t.length>0&&!t.startsWith("#")},$g=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Nm||e(r)&&t("paths",r)&&n("object",r))),qg=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Tm||e(r)&&t("reference",r)&&n("object",r))),Ug=e=>{if(!qg(e))return!1;if(!ms(e.$ref))return!1;const t=e.$ref.toValue();return"string"==typeof t&&t.length>0&&!t.startsWith("#")},zg=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Rm||e(r)&&t("requestBody",r)&&n("object",r))),Vg=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Mm||e(r)&&t("response",r)&&n("object",r))),Wg=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Dm||e(r)&&t("responses",r)&&n("object",r))),Jg=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Lm||e(r)&&t("schema",r)&&n("object",r))),Kg=e=>vs(e)&&e.classes.includes("boolean-json-schema"),Hg=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Bm||e(r)&&t("securityRequirement",r)&&n("object",r))),Gg=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof qm||e(r)&&t("server",r)&&n("object",r))),Zg=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof Um||e(r)&&t("serverVariable",r)&&n("object",r))),Yg=fs((({hasBasicElementProps:e,isElementType:t,primitiveEq:n})=>r=>r instanceof xm||e(r)&&t("mediaType",r)&&n("object",r))),Xg=Ys({props:{parent:null},init({parent:e=this.parent}){this.parent=e,this.passingOptionsNames=[...this.passingOptionsNames,"parent"]}}),Qg=Ys(Gc,Xg,Zc,{props:{specPath:Hn(["document","objects","Schema"]),canSupportSpecificationExtensions:!0},init(){const e=()=>{let e;return e=null!==this.openApiSemanticElement&&Pg(this.openApiSemanticElement.jsonSchemaDialect)?this.openApiSemanticElement.jsonSchemaDialect.toValue():null!==this.openApiGenericElement&&ms(this.openApiGenericElement.get("jsonSchemaDialect"))?this.openApiGenericElement.get("jsonSchemaDialect").toValue():bm.default.toValue(),e},t=t=>{if(Is(this.parent)&&!ms(t.get("$schema")))this.element.setMetaProperty("inherited$schema",e());else if(Jg(this.parent)&&!ms(t.get("$schema"))){var n,r;const e=kr(null===(n=this.parent.meta.get("inherited$schema"))||void 0===n?void 0:n.toValue(),null===(r=this.parent.$schema)||void 0===r?void 0:r.toValue());this.element.setMetaProperty("inherited$schema",e)}},n=e=>{var t;const n=null!==this.parent?this.parent.getMetaProperty("inherited$id",[]).clone():new Pt.ON,r=null===(t=e.get("$id"))||void 0===t?void 0:t.toValue();Nl(r)&&n.push(r),this.element.setMetaProperty("inherited$id",n)};this.ObjectElement=function(e){this.element=new Lm,t(e),n(e),this.parent=this.element;const r=Gc.compose.methods.ObjectElement.call(this,e);return ms(this.element.$ref)&&(this.element.classes.push("reference-element"),this.element.setMetaProperty("referenced-element","schema")),r},this.BooleanElement=function(e){return this.element=e.clone(),this.element.classes.push("boolean-json-schema"),ei}}}),ey=Zc,ty=Ys(Zc,{methods:{ObjectElement(e){return this.element=e.clone(),this.element.classes.push("json-schema-$vocabulary"),ei}}}),ny=Zc,ry=Zc,oy=Zc,sy=Zc,iy=Ys(Zc,{methods:{StringElement(e){return this.element=e.clone(),this.element.classes.push("reference-value"),ei}}}),ay=Ys(yu,Xg,Zc,{props:{specPath:Hn(["document","objects","Schema"])},init(){this.element=new Pt.Sb,this.element.classes.push("json-schema-$defs")}}),ly=Zc,cy=Ys(Bc,Xg,Zc,{init(){this.element=new Pt.ON,this.element.classes.push("json-schema-allOf")},methods:{ArrayElement(e){return e.forEach((e=>{if(bs(e)){const t=this.toRefractedElement(["document","objects","Schema"],e);this.element.push(t)}else{const t=e.clone();this.element.push(t)}})),this.copyMetaAndAttributes(e,this.element),ei}}}),uy=Ys(Bc,Xg,Zc,{init(){this.element=new Pt.ON,this.element.classes.push("json-schema-anyOf")},methods:{ArrayElement(e){return e.forEach((e=>{if(bs(e)){const t=this.toRefractedElement(["document","objects","Schema"],e);this.element.push(t)}else{const t=e.clone();this.element.push(t)}})),this.copyMetaAndAttributes(e,this.element),ei}}}),py=Ys(Bc,Xg,Zc,{init(){this.element=new Pt.ON,this.element.classes.push("json-schema-oneOf")},methods:{ArrayElement(e){return e.forEach((e=>{if(bs(e)){const t=this.toRefractedElement(["document","objects","Schema"],e);this.element.push(t)}else{const t=e.clone();this.element.push(t)}})),this.copyMetaAndAttributes(e,this.element),ei}}}),hy=Ys(yu,Xg,Zc,{props:{specPath:Hn(["document","objects","Schema"])},init(){this.element=new Pt.Sb,this.element.classes.push("json-schema-dependentSchemas")}}),fy=Ys(Bc,Xg,Zc,{init(){this.element=new Pt.ON,this.element.classes.push("json-schema-prefixItems")},methods:{ArrayElement(e){return e.forEach((e=>{if(bs(e)){const t=this.toRefractedElement(["document","objects","Schema"],e);this.element.push(t)}else{const t=e.clone();this.element.push(t)}})),this.copyMetaAndAttributes(e,this.element),ei}}}),dy=Ys(yu,Xg,Zc,{props:{specPath:Hn(["document","objects","Schema"])},init(){this.element=new Pt.Sb,this.element.classes.push("json-schema-properties")}}),my=Ys(yu,Xg,Zc,{props:{specPath:Hn(["document","objects","Schema"])},init(){this.element=new Pt.Sb,this.element.classes.push("json-schema-patternProperties")}}),gy=Ys(Zc,{methods:{StringElement(e){return this.element=e.clone(),this.element.classes.push("json-schema-type"),ei},ArrayElement(e){return this.element=e.clone(),this.element.classes.push("json-schema-type"),ei}}}),yy=Ys(Zc,{methods:{ArrayElement(e){return this.element=e.clone(),this.element.classes.push("json-schema-enum"),ei}}}),vy=Zc,by=Zc,wy=Zc,Ey=Zc,xy=Zc,Sy=Zc,_y=Zc,jy=Zc,Oy=Zc,ky=Zc,Ay=Zc,Cy=Zc,Py=Zc,Ny=Zc,Iy=Zc,Ty=Zc,Ry=Ys(Zc,{methods:{ArrayElement(e){return this.element=e.clone(),this.element.classes.push("json-schema-required"),ei}}}),My=Ys(Zc,{methods:{ObjectElement(e){return this.element=e.clone(),this.element.classes.push("json-schema-dependentRequired"),ei}}}),Dy=Zc,Fy=Zc,Ly=Zc,By=Zc,$y=Zc,qy=Zc,Uy=Ys(Zc,{methods:{ArrayElement(e){return this.element=e.clone(),this.element.classes.push("json-schema-examples"),ei}}}),zy=Zc,Vy=Zc,Wy=Zc,Jy=Zc,{visitors:{document:{objects:{Discriminator:{$visitor:Ky}}}}}=tm,Hy=Ys(Ky,{props:{canSupportSpecificationExtensions:!0},init(){this.element=new hm}}),{visitors:{document:{objects:{XML:{$visitor:Gy}}}}}=tm,Zy=Ys(Gy,{init(){this.element=new Vm}}),Yy=Ys(yu,Zc,{props:{specPath:Hn(["document","objects","Schema"])},init(){this.element=new Lh}});class Xy extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(Xy.primaryClass)}}Xo(Xy,"primaryClass","components-path-items");const Qy=Xy,ev=Ys(yu,Zc,{props:{specPath:e=>Uc(e)?["document","objects","Reference"]:["document","objects","PathItem"]},init(){this.element=new Qy},methods:{ObjectElement(e){const t=yu.compose.methods.ObjectElement.call(this,e);return this.element.filter(qg).forEach((e=>{e.setMetaProperty("referenced-element","pathItem")})),t}}}),{visitors:{document:{objects:{Example:{$visitor:tv}}}}}=tm,nv=Ys(tv,{init(){this.element=new dm}}),{visitors:{document:{objects:{ExternalDocumentation:{$visitor:rv}}}}}=tm,ov=Ys(rv,{init(){this.element=new mm}}),{visitors:{document:{objects:{Encoding:{$visitor:sv}}}}}=tm,iv=Ys(sv,{init(){this.element=new fm}}),{visitors:{document:{objects:{Paths:{$visitor:av}}}}}=tm,lv=Ys(av,{init(){this.element=new Nm}}),{visitors:{document:{objects:{RequestBody:{$visitor:cv}}}}}=tm,uv=Ys(cv,{init(){this.element=new Rm}}),{visitors:{document:{objects:{Callback:{$visitor:pv}}}}}=tm,hv=Ys(pv,{props:{specPath:e=>Uc(e)?["document","objects","Reference"]:["document","objects","PathItem"]},init(){this.element=new cm},methods:{ObjectElement(e){const t=pv.compose.methods.ObjectElement.call(this,e);return this.element.filter(qg).forEach((e=>{e.setMetaProperty("referenced-element","pathItem")})),t}}}),{visitors:{document:{objects:{Response:{$visitor:fv}}}}}=tm,dv=Ys(fv,{init(){this.element=new Mm}}),{visitors:{document:{objects:{Responses:{$visitor:mv}}}}}=tm,gv=Ys(mv,{init(){this.element=new Dm}}),{visitors:{document:{objects:{Operation:{$visitor:yv}}}}}=tm,vv=Ys(yv,{init(){this.element=new Am}}),{visitors:{document:{objects:{PathItem:{$visitor:bv}}}}}=tm,wv=Ys(bv,{init(){this.element=new Pm}}),{visitors:{document:{objects:{SecurityScheme:{$visitor:Ev}}}}}=tm,xv=Ys(Ev,{init(){this.element=new $m}}),{visitors:{document:{objects:{OAuthFlows:{$visitor:Sv}}}}}=tm,_v=Ys(Sv,{init(){this.element=new _m}}),{visitors:{document:{objects:{OAuthFlow:{$visitor:jv}}}}}=tm,Ov=Ys(jv,{init(){this.element=new Sm}});class kv extends Pt.Sb{constructor(e,t,n){super(e,t,n),this.classes.push(kv.primaryClass)}}Xo(kv,"primaryClass","webhooks");const Av=kv,Cv=Ys(yu,Zc,{props:{specPath:e=>Uc(e)?["document","objects","Reference"]:["document","objects","PathItem"]},init(){this.element=new Av},methods:{ObjectElement(e){const t=yu.compose.methods.ObjectElement.call(this,e);return this.element.filter(qg).forEach((e=>{e.setMetaProperty("referenced-element","pathItem")})),this.element.filter(Lg).forEach(((e,t)=>{e.setMetaProperty("webhook-name",t.toValue())})),t}}}),Pv={visitors:{value:tm.visitors.value,document:{objects:{OpenApi:{$visitor:Wm,fixedFields:{openapi:tm.visitors.document.objects.OpenApi.fixedFields.openapi,info:{$ref:"#/visitors/document/objects/Info"},jsonSchemaDialect:ng,servers:tm.visitors.document.objects.OpenApi.fixedFields.servers,paths:{$ref:"#/visitors/document/objects/Paths"},webhooks:Cv,components:{$ref:"#/visitors/document/objects/Components"},security:tm.visitors.document.objects.OpenApi.fixedFields.security,tags:tm.visitors.document.objects.OpenApi.fixedFields.tags,externalDocs:{$ref:"#/visitors/document/objects/ExternalDocumentation"}}},Info:{$visitor:Km,fixedFields:{title:tm.visitors.document.objects.Info.fixedFields.title,description:tm.visitors.document.objects.Info.fixedFields.description,summary:Hm,termsOfService:tm.visitors.document.objects.Info.fixedFields.termsOfService,contact:{$ref:"#/visitors/document/objects/Contact"},license:{$ref:"#/visitors/document/objects/License"},version:tm.visitors.document.objects.Info.fixedFields.version}},Contact:{$visitor:Zm,fixedFields:{name:tm.visitors.document.objects.Contact.fixedFields.name,url:tm.visitors.document.objects.Contact.fixedFields.url,email:tm.visitors.document.objects.Contact.fixedFields.email}},License:{$visitor:Xm,fixedFields:{name:tm.visitors.document.objects.License.fixedFields.name,identifier:Qm,url:tm.visitors.document.objects.License.fixedFields.url}},Server:{$visitor:og,fixedFields:{url:tm.visitors.document.objects.Server.fixedFields.url,description:tm.visitors.document.objects.Server.fixedFields.description,variables:tm.visitors.document.objects.Server.fixedFields.variables}},ServerVariable:{$visitor:ig,fixedFields:{enum:tm.visitors.document.objects.ServerVariable.fixedFields.enum,default:tm.visitors.document.objects.ServerVariable.fixedFields.default,description:tm.visitors.document.objects.ServerVariable.fixedFields.description}},Components:{$visitor:hg,fixedFields:{schemas:Yy,responses:tm.visitors.document.objects.Components.fixedFields.responses,parameters:tm.visitors.document.objects.Components.fixedFields.parameters,examples:tm.visitors.document.objects.Components.fixedFields.examples,requestBodies:tm.visitors.document.objects.Components.fixedFields.requestBodies,headers:tm.visitors.document.objects.Components.fixedFields.headers,securitySchemes:tm.visitors.document.objects.Components.fixedFields.securitySchemes,links:tm.visitors.document.objects.Components.fixedFields.links,callbacks:tm.visitors.document.objects.Components.fixedFields.callbacks,pathItems:ev}},Paths:{$visitor:lv},PathItem:{$visitor:wv,fixedFields:{$ref:tm.visitors.document.objects.PathItem.fixedFields.$ref,summary:tm.visitors.document.objects.PathItem.fixedFields.summary,description:tm.visitors.document.objects.PathItem.fixedFields.description,get:{$ref:"#/visitors/document/objects/Operation"},put:{$ref:"#/visitors/document/objects/Operation"},post:{$ref:"#/visitors/document/objects/Operation"},delete:{$ref:"#/visitors/document/objects/Operation"},options:{$ref:"#/visitors/document/objects/Operation"},head:{$ref:"#/visitors/document/objects/Operation"},patch:{$ref:"#/visitors/document/objects/Operation"},trace:{$ref:"#/visitors/document/objects/Operation"},servers:tm.visitors.document.objects.PathItem.fixedFields.servers,parameters:tm.visitors.document.objects.PathItem.fixedFields.parameters}},Operation:{$visitor:vv,fixedFields:{tags:tm.visitors.document.objects.Operation.fixedFields.tags,summary:tm.visitors.document.objects.Operation.fixedFields.summary,description:tm.visitors.document.objects.Operation.fixedFields.description,externalDocs:{$ref:"#/visitors/document/objects/ExternalDocumentation"},operationId:tm.visitors.document.objects.Operation.fixedFields.operationId,parameters:tm.visitors.document.objects.Operation.fixedFields.parameters,requestBody:tm.visitors.document.objects.Operation.fixedFields.requestBody,responses:{$ref:"#/visitors/document/objects/Responses"},callbacks:tm.visitors.document.objects.Operation.fixedFields.callbacks,deprecated:tm.visitors.document.objects.Operation.fixedFields.deprecated,security:tm.visitors.document.objects.Operation.fixedFields.security,servers:tm.visitors.document.objects.Operation.fixedFields.servers}},ExternalDocumentation:{$visitor:ov,fixedFields:{description:tm.visitors.document.objects.ExternalDocumentation.fixedFields.description,url:tm.visitors.document.objects.ExternalDocumentation.fixedFields.url}},Parameter:{$visitor:wg,fixedFields:{name:tm.visitors.document.objects.Parameter.fixedFields.name,in:tm.visitors.document.objects.Parameter.fixedFields.in,description:tm.visitors.document.objects.Parameter.fixedFields.description,required:tm.visitors.document.objects.Parameter.fixedFields.required,deprecated:tm.visitors.document.objects.Parameter.fixedFields.deprecated,allowEmptyValue:tm.visitors.document.objects.Parameter.fixedFields.allowEmptyValue,style:tm.visitors.document.objects.Parameter.fixedFields.style,explode:tm.visitors.document.objects.Parameter.fixedFields.explode,allowReserved:tm.visitors.document.objects.Parameter.fixedFields.allowReserved,schema:{$ref:"#/visitors/document/objects/Schema"},example:tm.visitors.document.objects.Parameter.fixedFields.example,examples:tm.visitors.document.objects.Parameter.fixedFields.examples,content:tm.visitors.document.objects.Parameter.fixedFields.content}},RequestBody:{$visitor:uv,fixedFields:{description:tm.visitors.document.objects.RequestBody.fixedFields.description,content:tm.visitors.document.objects.RequestBody.fixedFields.content,required:tm.visitors.document.objects.RequestBody.fixedFields.required}},MediaType:{$visitor:lg,fixedFields:{schema:{$ref:"#/visitors/document/objects/Schema"},example:tm.visitors.document.objects.MediaType.fixedFields.example,examples:tm.visitors.document.objects.MediaType.fixedFields.examples,encoding:tm.visitors.document.objects.MediaType.fixedFields.encoding}},Encoding:{$visitor:iv,fixedFields:{contentType:tm.visitors.document.objects.Encoding.fixedFields.contentType,headers:tm.visitors.document.objects.Encoding.fixedFields.headers,style:tm.visitors.document.objects.Encoding.fixedFields.style,explode:tm.visitors.document.objects.Encoding.fixedFields.explode,allowReserved:tm.visitors.document.objects.Encoding.fixedFields.allowReserved}},Responses:{$visitor:gv,fixedFields:{default:tm.visitors.document.objects.Responses.fixedFields.default}},Response:{$visitor:dv,fixedFields:{description:tm.visitors.document.objects.Response.fixedFields.description,headers:tm.visitors.document.objects.Response.fixedFields.headers,content:tm.visitors.document.objects.Response.fixedFields.content,links:tm.visitors.document.objects.Response.fixedFields.links}},Callback:{$visitor:hv},Example:{$visitor:nv,fixedFields:{summary:tm.visitors.document.objects.Example.fixedFields.summary,description:tm.visitors.document.objects.Example.fixedFields.description,value:tm.visitors.document.objects.Example.fixedFields.value,externalValue:tm.visitors.document.objects.Example.fixedFields.externalValue}},Link:{$visitor:tg,fixedFields:{operationRef:tm.visitors.document.objects.Link.fixedFields.operationRef,operationId:tm.visitors.document.objects.Link.fixedFields.operationId,parameters:tm.visitors.document.objects.Link.fixedFields.parameters,requestBody:tm.visitors.document.objects.Link.fixedFields.requestBody,description:tm.visitors.document.objects.Link.fixedFields.description,server:{$ref:"#/visitors/document/objects/Server"}}},Header:{$visitor:xg,fixedFields:{description:tm.visitors.document.objects.Header.fixedFields.description,required:tm.visitors.document.objects.Header.fixedFields.required,deprecated:tm.visitors.document.objects.Header.fixedFields.deprecated,allowEmptyValue:tm.visitors.document.objects.Header.fixedFields.allowEmptyValue,style:tm.visitors.document.objects.Header.fixedFields.style,explode:tm.visitors.document.objects.Header.fixedFields.explode,allowReserved:tm.visitors.document.objects.Header.fixedFields.allowReserved,schema:{$ref:"#/visitors/document/objects/Schema"},example:tm.visitors.document.objects.Header.fixedFields.example,examples:tm.visitors.document.objects.Header.fixedFields.examples,content:tm.visitors.document.objects.Header.fixedFields.content}},Tag:{$visitor:dg,fixedFields:{name:tm.visitors.document.objects.Tag.fixedFields.name,description:tm.visitors.document.objects.Tag.fixedFields.description,externalDocs:{$ref:"#/visitors/document/objects/ExternalDocumentation"}}},Reference:{$visitor:gg,fixedFields:{$ref:tm.visitors.document.objects.Reference.fixedFields.$ref,summary:yg,description:vg}},Schema:{$visitor:Qg,fixedFields:{$schema:ey,$vocabulary:ty,$id:ny,$anchor:ry,$dynamicAnchor:oy,$dynamicRef:sy,$ref:iy,$defs:ay,$comment:ly,allOf:cy,anyOf:uy,oneOf:py,not:{$ref:"#/visitors/document/objects/Schema"},if:{$ref:"#/visitors/document/objects/Schema"},then:{$ref:"#/visitors/document/objects/Schema"},else:{$ref:"#/visitors/document/objects/Schema"},dependentSchemas:hy,prefixItems:fy,items:{$ref:"#/visitors/document/objects/Schema"},contains:{$ref:"#/visitors/document/objects/Schema"},properties:dy,patternProperties:my,additionalProperties:{$ref:"#/visitors/document/objects/Schema"},propertyNames:{$ref:"#/visitors/document/objects/Schema"},unevaluatedItems:{$ref:"#/visitors/document/objects/Schema"},unevaluatedProperties:{$ref:"#/visitors/document/objects/Schema"},type:gy,enum:yy,const:vy,multipleOf:by,maximum:wy,exclusiveMaximum:Ey,minimum:xy,exclusiveMinimum:Sy,maxLength:_y,minLength:jy,pattern:Oy,maxItems:ky,minItems:Ay,uniqueItems:Cy,maxContains:Py,minContains:Ny,maxProperties:Iy,minProperties:Ty,required:Ry,dependentRequired:My,title:Dy,description:Fy,default:Ly,deprecated:By,readOnly:$y,writeOnly:qy,examples:Uy,format:zy,contentEncoding:Vy,contentMediaType:Wy,contentSchema:{$ref:"#/visitors/document/objects/Schema"},discriminator:{$ref:"#/visitors/document/objects/Discriminator"},xml:{$ref:"#/visitors/document/objects/XML"},externalDocs:{$ref:"#/visitors/document/objects/ExternalDocumentation"},example:Jy}},Discriminator:{$visitor:Hy,fixedFields:{propertyName:tm.visitors.document.objects.Discriminator.fixedFields.propertyName,mapping:tm.visitors.document.objects.Discriminator.fixedFields.mapping}},XML:{$visitor:Zy,fixedFields:{name:tm.visitors.document.objects.XML.fixedFields.name,namespace:tm.visitors.document.objects.XML.fixedFields.namespace,prefix:tm.visitors.document.objects.XML.fixedFields.prefix,attribute:tm.visitors.document.objects.XML.fixedFields.attribute,wrapped:tm.visitors.document.objects.XML.fixedFields.wrapped}},SecurityScheme:{$visitor:xv,fixedFields:{type:tm.visitors.document.objects.SecurityScheme.fixedFields.type,description:tm.visitors.document.objects.SecurityScheme.fixedFields.description,name:tm.visitors.document.objects.SecurityScheme.fixedFields.name,in:tm.visitors.document.objects.SecurityScheme.fixedFields.in,scheme:tm.visitors.document.objects.SecurityScheme.fixedFields.scheme,bearerFormat:tm.visitors.document.objects.SecurityScheme.fixedFields.bearerFormat,flows:{$ref:"#/visitors/document/objects/OAuthFlows"},openIdConnectUrl:tm.visitors.document.objects.SecurityScheme.fixedFields.openIdConnectUrl}},OAuthFlows:{$visitor:_v,fixedFields:{implicit:{$ref:"#/visitors/document/objects/OAuthFlow"},password:{$ref:"#/visitors/document/objects/OAuthFlow"},clientCredentials:{$ref:"#/visitors/document/objects/OAuthFlow"},authorizationCode:{$ref:"#/visitors/document/objects/OAuthFlow"}}},OAuthFlow:{$visitor:Ov,fixedFields:{authorizationUrl:tm.visitors.document.objects.OAuthFlow.fixedFields.authorizationUrl,tokenUrl:tm.visitors.document.objects.OAuthFlow.fixedFields.tokenUrl,refreshUrl:tm.visitors.document.objects.OAuthFlow.fixedFields.refreshUrl,scopes:tm.visitors.document.objects.OAuthFlow.fixedFields.scopes}},SecurityRequirement:{$visitor:ug}},extension:{$visitor:tm.visitors.document.extension.$visitor}}}};function Nv(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}const Iv=e=>{if(ds(e))return`${e.element.charAt(0).toUpperCase()+e.element.slice(1)}Element`},Tv=function(e){for(var t=1;t{const{base:t}=e;return t.register("callback",cm),t.register("components",um),t.register("contact",pm),t.register("discriminator",hm),t.register("encoding",fm),t.register("example",dm),t.register("externalDocumentation",mm),t.register("header",gm),t.register("info",ym),t.register("jsonSchemaDialect",bm),t.register("license",wm),t.register("link",Em),t.register("mediaType",xm),t.register("oAuthFlow",Sm),t.register("oAuthFlows",_m),t.register("openapi",jm),t.register("openApi3_1",km),t.register("operation",Am),t.register("parameter",Cm),t.register("pathItem",Pm),t.register("paths",Nm),t.register("reference",Tm),t.register("requestBody",Rm),t.register("response",Mm),t.register("responses",Dm),t.register("schema",Lm),t.register("securityRequirement",Bm),t.register("securityScheme",$m),t.register("server",qm),t.register("serverVariable",Um),t.register("tag",zm),t.register("xml",Vm),t}};function Mv(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Dv(e){for(var t=1;t{const e=zs(Rv);return{predicates:Dv(Dv({},c),{},{isStringElement:ms,isArrayElement:ws,isObjectElement:bs,includesClasses:Ns}),namespace:e}};function Lv(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}const Bv=(e,{specPath:t=["visitors","document","objects","OpenApi","$visitor"],plugins:n=[]}={})=>{const r=(0,Pt.Qc)(e),o=Za(Pv),s=is(t,[],o);return fi(r,s,{state:{specObj:o}}),di(s.element,n,{toolboxCreator:Fv,visitorOptions:{keyMap:Tv,nodeTypeGetter:Iv}})},$v=e=>(t,n={})=>Bv(t,function(e){for(var t=1;te.includes(t)))}findBy(e="3.1.0",t="generic"){const n="generic"===t?`vnd.oai.openapi;version=${e}`:`vnd.oai.openapi+${t};version=${e}`;return this.find((e=>e.includes(n)))||this.unknownMediaType}latest(e="generic"){return ao(this.filterByFormat(e))}}const zv=new Uv("application/vnd.oai.openapi;version=3.1.0","application/vnd.oai.openapi+json;version=3.1.0","application/vnd.oai.openapi+yaml;version=3.1.0");var Vv=n(34155),Wv=Or((function(e,t){return gr(Io(""),Fr(as(e)),io(""))(t)}));const Jv=Wv;const Kv=pr(qo);const Hv=Zt(1,gr(cn,Xr("RegExp")));const Gv=Bo(Xs,Co(/[.*+?^${}()|[\]\\-]/g,"\\$&"));var Zv=function(e,t){if("string"!=typeof e&&!(e instanceof String))throw TypeError("`".concat(t,"` must be a string"))};var Yv=Zt(3,(function(e,t,n){!function(e,t,n){if(null==n||null==e||null==t)throw TypeError("Input values must not be `null` or `undefined`")}(e,t,n),Zv(n,"str"),Zv(t,"replaceValue"),function(e){if(!("string"==typeof e||e instanceof String||e instanceof RegExp))throw TypeError("`searchValue` must be a string or an regexp")}(e);var r=new RegExp(Hv(e)?e:Gv(e),"g");return Co(r,t,n)})),Xv=oo(2,"replaceAll");const Qv=ts(String.prototype.replaceAll)?Xv:Yv,eb=()=>wo(Ro(/^win/),["platform"],Vv),tb=e=>{try{const t=new URL(e);return Jv(":",t.protocol)}catch{return}},nb=(gr(tb,Kv),e=>{if(Vv.browser)return!1;const t=tb(e);return qo(t)||"file"===t||/^[a-zA-Z]$/.test(t)}),rb=e=>{const t=tb(e);return"http"===t||"https"===t},ob=(e,t)=>{const n=[/%23/g,"#",/%24/g,"$",/%26/g,"&",/%2C/g,",",/%40/g,"@"],r=So(!1,"keepFileProtocol",t),o=So(eb,"isWindows",t);let s=decodeURI(e);for(let e=0;e{const t=e.indexOf("#");return-1!==t?e.substr(t):"#"},ib=e=>{const t=e.indexOf("#");let n=e;return t>=0&&(n=e.substr(0,t)),n},ab=()=>{if(Vv.browser)return ib(globalThis.location.href);const e=Vv.cwd(),t=ao(e);return["/","\\"].includes(t)?e:e+(eb()?"\\":"/")},lb=(e,t)=>{const n=new URL(t,new URL(e,"resolve://"));if("resolve:"===n.protocol){const{pathname:e,search:t,hash:r}=n;return e+t+r}return n.toString()},cb=e=>nb(e)?(e=>{const t=[/\?/g,"%3F",/#/g,"%23"];let n=e;eb()&&(n=n.replace(/\\/g,"/")),n=encodeURI(n);for(let e=0;enb(e)?ob(e):decodeURI(e),pb=Ys({props:{uri:"",value:null,depth:0,refSet:null,errors:[]},init({depth:e=this.depth,refSet:t=this.refSet,uri:n=this.uri,value:r=this.value}={}){this.uri=n,this.value=r,this.depth=e,this.refSet=t,this.errors=[]}}),hb=pb,fb=Ys({props:{rootRef:null,refs:[],circular:!1},init({refs:e=[]}={}){this.refs=[],e.forEach((e=>this.add(e)))},methods:{get size(){return this.refs.length},add(e){return this.has(e)||(this.refs.push(e),this.rootRef=null===this.rootRef?e:this.rootRef,e.refSet=this),this},merge(e){for(const t of e.values())this.add(t);return this},has(e){const t=Xs(e)?e:e.uri;return Kv(this.find(xo(t,"uri")))},find(e){return this.refs.find(e)},*values(){yield*this.refs},clean(){this.refs.forEach((e=>{e.refSet=null})),this.refs=[]}}}),db=fb,mb={parse:{mediaType:"text/plain",parsers:[],parserOpts:{}},resolve:{baseURI:"",resolvers:[],resolverOpts:{},strategies:[],external:!0,maxDepth:1/0},dereference:{strategies:[],refSet:null,maxDepth:1/0}},gb=lo(uo(["resolve","baseURI"]),or(["resolve","baseURI"])),yb=e=>Ri(e)?ab():e,vb=Ys({props:{uri:null,mediaType:"text/plain",data:null,parseResult:null},init({uri:e=this.uri,mediaType:t=this.mediaType,data:n=this.data,parseResult:r=this.parseResult}={}){this.uri=e,this.mediaType=t,this.data=n,this.parseResult=r},methods:{get extension(){return Xs(this.uri)?(e=>{const t=e.lastIndexOf(".");return t>=0?e.substr(t).toLowerCase():""})(this.uri):""},toString(){if("string"==typeof this.data)return this.data;if(this.data instanceof ArrayBuffer||["ArrayBuffer"].includes(cn(this.data))||ArrayBuffer.isView(this.data)){return new TextDecoder("utf-8").decode(this.data)}return String(this.data)}}});class bb extends Error{constructor(e,t){if(super(e),this.name=this.constructor.name,this.message=e,"function"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error(e).stack,$s(t)&&Gr("cause",t)&&!Gr("cause",this)){const{cause:e}=t;this.cause=e,Gr("stack",e)&&(this.stack=`${this.stack}\nCAUSE: ${null==e?void 0:e.stack}`)}}}const wb=bb;const Eb=class extends wb{constructor(e,t){super(e,{cause:t.cause}),Xo(this,"plugin",void 0),this.plugin=t.plugin}},xb=async(e,t,n)=>{const r=await Promise.all(n.map(is([e],[t])));return n.filter(((e,t)=>r[t]))},Sb=async(e,t,n)=>{let r;for(const o of n)try{const n=await o[e].call(o,...t);return{plugin:o,result:n}}catch(e){r=new Eb("Error while running plugin",{cause:e,plugin:o})}return Promise.reject(r)};const _b=class extends wb{};const jb=class extends _b{};const Ob=class extends wb{},kb=async(e,t)=>{let n=e,r=!1;if(!Os(e)){const t=new e.constructor(e.content,e.meta.clone(),e.attributes);t.classes.push("result"),n=new zo([t]),r=!0}const o=vb({uri:t.resolve.baseURI,parseResult:n,mediaType:t.parse.mediaType}),s=await xb("canDereference",o,t.dereference.strategies);if(so(s))throw new jb(o.uri);try{const{result:e}=await Sb("dereference",[o,t],s);return r?e.get(0):e}catch(e){throw new Ob(`Error while dereferencing file "${o.uri}"`,{cause:e})}},Ab=async(e,t={})=>{const n=((e,t)=>{const n=mo(e,t);return vo(gb,yb,n)})(mb,t);return kb(e,n)};const Cb=class extends wb{constructor(e="Not Implemented",t){super(e,t)}},Pb=Ys({props:{name:"",allowEmpty:!0,sourceMap:!1,fileExtensions:[],mediaTypes:[]},init({allowEmpty:e=this.allowEmpty,sourceMap:t=this.sourceMap,fileExtensions:n=this.fileExtensions,mediaTypes:r=this.mediaTypes}={}){this.allowEmpty=e,this.sourceMap=t,this.fileExtensions=n,this.mediaTypes=r},methods:{async canParse(){throw new Cb},async parse(){throw new Cb}}}),Nb=Pb,Ib=Ys(Nb,{props:{name:"binary"},methods:{async canParse(e){return 0===this.fileExtensions.length||this.fileExtensions.includes(e.extension)},async parse(e){try{const t=unescape(encodeURIComponent(e.toString())),n=btoa(t),r=new zo;if(0!==n.length){const e=new Pt.RP(n);e.classes.push("result"),r.push(e)}return r}catch(t){throw new _b(`Error parsing "${e.uri}"`,{cause:t})}}}}),Tb=Ys({props:{name:null},methods:{canResolve:()=>!1,async resolve(){throw new Cb}}});const Rb=Zt(1,$n(Promise.all,Promise));const Mb=class extends wb{};const Db=class extends Mb{};const Fb=class extends Ob{};const Lb=class extends Mb{};function Bb(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function $b(e){for(var t=1;t{const n=vb({uri:cb(ib(e)),mediaType:t.parse.mediaType}),r=await(async(e,t)=>{const n=t.resolve.resolvers.map((e=>{const n=Object.create(e);return Object.assign(n,t.resolve.resolverOpts)})),r=await xb("canRead",e,n);if(so(r))throw new Lb(e.uri);try{const{result:t}=await Sb("read",[e],r);return t}catch(t){throw new Mb(`Error while reading file "${e.uri}"`,{cause:t})}})(n,t);return(async(e,t)=>{const n=t.parse.parsers.map((e=>{const n=Object.create(e);return Object.assign(n,t.parse.parserOpts)})),r=await xb("canParse",e,n);if(so(r))throw new Lb(e.uri);try{const{plugin:t,result:n}=await Sb("parse",[e],r);return!t.allowEmpty&&n.isEmpty?Promise.reject(new _b(`Error while parsing file "${e.uri}". File is empty.`)):n}catch(t){throw new _b(`Error while parsing file "${e.uri}"`,{cause:t})}})(vb($b($b({},n),{},{data:r})),t)},Ub=(e,t)=>{const n=hi({predicate:e});return fi(t,n),new Pt.O4(n.result)};class zb extends Error{constructor(e){super(e),this.name=this.constructor.name,this.message=e,"function"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error(e).stack}}const Vb=(e,t)=>{const n=hi({predicate:e,returnOnTrue:ei});return fi(t,n),bo(void 0,[0],n.result)};const Wb=class extends wb{};class Jb extends Wb{constructor(e){super(`Invalid JSON Schema $anchor "${e}".`)}}class Kb extends Error{constructor(e){super(e),this.name=this.constructor.name,this.message=e,"function"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error(e).stack}}const Hb=e=>/^[A-Za-z_][A-Za-z_0-9.-]*$/.test(e),Gb=e=>{const t=sb(e);return qi("#",t)},Zb=(e,t)=>{const n=(e=>{if(!Hb(e))throw new Jb(e);return e})(e),r=Vb((e=>{var t;return Jg(e)&&(null===(t=e.$anchor)||void 0===t?void 0:t.toValue())===n}),t);if(qo(r))throw new Kb(`Evaluation failed on token: "${n}"`);return r},Yb=(e,t)=>{if(void 0===t.$ref)return;const n=sb(t.$ref.toValue()),r=t.meta.get("inherited$id").toValue();return`${Jn(((e,t)=>lb(e,cb(ib(t)))),e,[...r,t.$ref.toValue()])}${"#"===n?"":n}`},Xb=e=>{if(Xb.cache.has(e))return Xb.cache.get(e);const t=Lm.refract(e);return Xb.cache.set(e,t),t};Xb.cache=new WeakMap;const Qb=e=>As(e)?Xb(e):e,ew=(e,t)=>{const{cache:n}=ew,r=ib(e),o=e=>Jg(e)&&void 0!==e.$id;if(!n.has(t)){const e=Ub(o,t);n.set(t,Array.from(e))}const s=n.get(t).find((e=>((e,t)=>{if(void 0===t.$id)return;const n=t.meta.get("inherited$id").toValue();return Jn(((e,t)=>lb(e,cb(ib(t)))),e,[...n,t.$id.toValue()])})(r,e)===r));if(qo(s))throw new zb(`Evaluation failed on URI: "${e}"`);let i,a;return Hb(Gb(e))?(i=Zb,a=Gb(e)):(i=Ji,a=Ki(e)),i(a,s)};function tw(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function nw(e){for(var t=1;t=this.options.resolve.maxDepth)throw new Db(`Maximum resolution depth of ${this.options.resolve.maxDepth} has been exceeded by file "${this.reference.uri}"`);const t=this.toBaseURI(e),{refSet:n}=this.reference;if(n.has(t))return n.find(xo(t,"uri"));const r=await qb(ub(t),nw(nw({},this.options),{},{parse:nw(nw({},this.options.parse),{},{mediaType:"text/plain"})})),o=hb({uri:t,value:r,depth:this.reference.depth+1});return n.add(o),o},ReferenceElement(e){var t;if(!this.options.resolve.external&&Ug(e))return!1;const n=null===(t=e.$ref)||void 0===t?void 0:t.toValue(),r=this.toBaseURI(n);Hr(r,this.crawlingMap)||(this.crawlingMap[r]=this.toReference(n)),this.crawledElements.push(e)},PathItemElement(e){var t;if(!ms(e.$ref))return;if(!this.options.resolve.external&&Bg(e))return;const n=null===(t=e.$ref)||void 0===t?void 0:t.toValue(),r=this.toBaseURI(n);Hr(r,this.crawlingMap)||(this.crawlingMap[r]=this.toReference(n)),this.crawledElements.push(e)},LinkElement(e){if((ms(e.operationRef)||ms(e.operationId))&&(this.options.resolve.external||!Tg(e))){if(ms(e.operationRef)&&ms(e.operationId))throw new Error("LinkElement operationRef and operationId are mutually exclusive.");if(Tg(e)){var t;const n=null===(t=e.operationRef)||void 0===t?void 0:t.toValue(),r=this.toBaseURI(n);Hr(r,this.crawlingMap)||(this.crawlingMap[r]=this.toReference(n))}}},ExampleElement(e){var t;if(!ms(e.externalValue))return;if(!this.options.resolve.external&&ms(e.externalValue))return;if(e.hasKey("value")&&ms(e.externalValue))throw new Error("ExampleElement value and externalValue fields are mutually exclusive.");const n=null===(t=e.externalValue)||void 0===t?void 0:t.toValue(),r=this.toBaseURI(n);Hr(r,this.crawlingMap)||(this.crawlingMap[r]=this.toReference(n))},SchemaElement(e){if(this.visited.has(e))return!1;if(!ms(e.$ref))return void this.visited.add(e);const t=this.reference.uri,n=Yb(t,e),r=ib(n),o=vb({uri:r}),s=go((e=>e.canRead(o)),this.options.resolve.resolvers),i=!s,a=!s&&this.reference.uri!==r;if(this.options.resolve.external||!a){if(!Hr(r,this.crawlingMap))try{this.crawlingMap[r]=s||i?this.reference:this.toReference(ub(n))}catch(e){if(!(i&&e instanceof zb))throw e;this.crawlingMap[r]=this.toReference(ub(n))}this.crawledElements.push(e)}else this.visited.add(e)},async crawlReferenceElement(e){var t;const n=await this.toReference(e.$ref.toValue());this.indirections.push(e);const r=Ki(null===(t=e.$ref)||void 0===t?void 0:t.toValue());let o=Ji(r,n.value.result);if(As(o)){const t=e.meta.get("referenced-element").toValue();if(Uc(o))o=Tm.refract(o),o.setMetaProperty("referenced-element",t);else{o=this.namespace.getElementClass(t).refract(o)}}if(this.indirections.includes(o))throw new Error("Recursive Reference Object detected");if(this.indirections.length>this.options.dereference.maxDepth)throw new Fb(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);const s=ow({reference:n,namespace:this.namespace,indirections:[...this.indirections],options:this.options});await rw(o,s,{keyMap:Tv,nodeTypeGetter:Iv}),await s.crawl(),this.indirections.pop()},async crawlPathItemElement(e){var t;const n=await this.toReference(e.$ref.toValue());this.indirections.push(e);const r=Ki(null===(t=e.$ref)||void 0===t?void 0:t.toValue());let o=Ji(r,n.value.result);if(As(o)&&(o=Pm.refract(o)),this.indirections.includes(o))throw new Error("Recursive Path Item Object reference detected");if(this.indirections.length>this.options.dereference.maxDepth)throw new Fb(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);const s=ow({reference:n,namespace:this.namespace,indirections:[...this.indirections],options:this.options});await rw(o,s,{keyMap:Tv,nodeTypeGetter:Iv}),await s.crawl(),this.indirections.pop()},async crawlSchemaElement(e){const t=this.reference.uri,n=Yb(t,e),r=ib(n),o=vb({uri:r}),s=go((e=>e.canRead(o)),this.options.resolve.resolvers),i=!s;let a,l;this.indirections.push(e);try{if(s||i){a=this.reference;l=ew(n,Qb(a.value.result))}else{a=await this.toReference(ub(n));const e=Ki(n);l=Qb(Ji(e,a.value.result))}}catch(e){if(!(i&&e instanceof zb))throw e;if(Hb(Gb(n))){a=await this.toReference(ub(n));const e=Gb(n);l=Zb(e,Qb(a.value.result))}else{a=await this.toReference(ub(n));const e=Ki(n);l=Qb(Ji(e,a.value.result))}}if(this.visited.add(e),this.indirections.includes(l))throw new Error("Recursive Schema Object reference detected");if(this.indirections.length>this.options.dereference.maxDepth)throw new Fb(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);const c=ow({reference:a,namespace:this.namespace,indirections:[...this.indirections],options:this.options,visited:this.visited});await rw(l,c,{keyMap:Tv,nodeTypeGetter:Iv}),await c.crawl(),this.indirections.pop()},async crawl(){await gr(nr,Rb)(this.crawlingMap),this.crawlingMap=null;for(const e of this.crawledElements)qg(e)?await this.crawlReferenceElement(e):Jg(e)?await this.crawlSchemaElement(e):Lg(e)&&await this.crawlPathItemElement(e)}}}),sw=ow,iw=fi[Symbol.for("nodejs.util.promisify.custom")],aw=Ys(Tb,{init(){this.name="openapi-3-1"},methods:{canResolve(e){var t;return"text/plain"!==e.mediaType?zv.includes(e.mediaType):Mg(null===(t=e.parseResult)||void 0===t?void 0:t.result)},async resolve(e,t){const n=zs(Rv),r=hb({uri:e.uri,value:e.parseResult}),o=sw({reference:r,namespace:n,options:t}),s=db();return s.add(r),await iw(s.rootRef.value,o,{keyMap:Tv,nodeTypeGetter:Iv}),await o.crawl(),s}}}),lw=aw,cw=e=>e.replace(/\s/g,""),uw=e=>e.replace(/\W/gi,"_"),pw=(e,t,n)=>{const r=cw(e);return r.length>0?uw(r):((e,t)=>`${uw(cw(t.toLowerCase()))}${uw(cw(e))}`)(t,n)},hw=({operationIdNormalizer:e=pw}={})=>({predicates:t,namespace:n})=>{const r=[],o=[],s=[];return{visitor:{OpenApi3_1Element:{leave(){const e=Jr((e=>Ti(e.operationId)),o);Object.entries(e).forEach((([e,t])=>{t.length<=1||t.forEach(((t,r)=>{const o=`${e}${r+1}`;t.operationId=new n.elements.String(o)}))})),s.forEach((e=>{var t;if(void 0===e.operationId)return;const n=String(Ti(e.operationId)),r=o.find((e=>Ti(e.meta.get("originalOperationId"))===n));void 0!==r&&(e.operationId=null===(t=r.operationId)||void 0===t?void 0:t.clone(),e.meta.set("originalOperationId",n),e.set("__originalOperationId",n))})),o.length=0,s.length=0}},PathItemElement:{enter(e){const t=kr("path",Ti(e.meta.get("path")));r.push(t)},leave(){r.pop()}},OperationElement:{enter(t){if(void 0===t.operationId)return;const s=String(Ti(t.operationId)),i=ao(r),a=kr("method",Ti(t.meta.get("http-method"))),l=e(s,i,a);s!==l&&(t.operationId=new n.elements.String(l),t.set("__originalOperationId",s),t.meta.set("originalOperationId",s),o.push(t))}},LinkElement:{leave(e){t.isLinkElement(e)&&void 0!==e.operationId&&s.push(e)}}}}},fw=()=>({predicates:e})=>{const t=(t,n)=>!!e.isParameterElement(t)&&(!!e.isParameterElement(n)&&(!!e.isStringElement(t.name)&&(!!e.isStringElement(t.in)&&(!!e.isStringElement(n.name)&&(!!e.isStringElement(n.in)&&(Ti(t.name)===Ti(n.name)&&Ti(t.in)===Ti(n.in))))))),n=[];return{visitor:{PathItemElement:{enter(t,r,o,s,i){if(i.some(e.isComponentsElement))return;const{parameters:a}=t;e.isArrayElement(a)?n.push([...a.content]):n.push([])},leave(){n.pop()}},OperationElement:{leave(e){const r=ao(n);if(!Array.isArray(r)||0===r.length)return;const o=bo([],["parameters","content"],e),s=Lo(t,[...o,...r]);e.parameters=new ld(s)}}}}},dw=()=>({predicates:e})=>{let t;return{visitor:{OpenApi3_1Element:{enter(n){e.isArrayElement(n.security)&&(t=n.security)},leave(){t=void 0}},OperationElement:{leave(n,r,o,s,i){if(i.some(e.isComponentsElement))return;var a;void 0===n.security&&void 0!==t&&(n.security=new yd(null===(a=t)||void 0===a?void 0:a.content))}}}}},mw=()=>({predicates:e})=>{let t;const n=[];return{visitor:{OpenApi3_1Element:{enter(n){var r;e.isArrayElement(n.servers)&&(t=null===(r=n.servers)||void 0===r?void 0:r.content)},leave(){t=void 0}},PathItemElement:{enter(r,o,s,i,a){if(a.some(e.isComponentsElement))return;void 0===r.servers&&void 0!==t&&(r.servers=new kd(t));const{servers:l}=r;void 0!==l&&e.isArrayElement(l)?n.push([...l.content]):n.push(void 0)},leave(){n.pop()}},OperationElement:{enter(t){const r=ao(n);void 0!==r&&(e.isArrayElement(t.servers)||(t.servers=new wd(r)))}}}}},gw=()=>({predicates:e})=>({visitor:{ParameterElement:{leave(t,n,r,o,s){var i,a;if(!s.some(e.isComponentsElement)&&void 0!==t.schema&&e.isSchemaElement(t.schema)&&(void 0!==(null===(i=t.schema)||void 0===i?void 0:i.example)||void 0!==(null===(a=t.schema)||void 0===a?void 0:a.examples))){if(void 0!==t.examples&&e.isObjectElement(t.examples)){const e=t.examples.map((e=>{var t;return null===(t=e.value)||void 0===t?void 0:t.clone()}));return void 0!==t.schema.examples&&t.schema.set("examples",e),void(void 0!==t.schema.example&&t.schema.set("example",e))}void 0!==t.example&&(void 0!==t.schema.examples&&t.schema.set("examples",[t.example.clone()]),void 0!==t.schema.example&&t.schema.set("example",t.example.clone()))}}}}}),yw=()=>({predicates:e})=>({visitor:{HeaderElement:{leave(t,n,r,o,s){var i,a;if(!s.some(e.isComponentsElement)&&void 0!==t.schema&&e.isSchemaElement(t.schema)&&(void 0!==(null===(i=t.schema)||void 0===i?void 0:i.example)||void 0!==(null===(a=t.schema)||void 0===a?void 0:a.examples))){if(void 0!==t.examples&&e.isObjectElement(t.examples)){const e=t.examples.map((e=>{var t;return null===(t=e.value)||void 0===t?void 0:t.clone()}));return void 0!==t.schema.examples&&t.schema.set("examples",e),void(void 0!==t.schema.example&&t.schema.set("example",e))}void 0!==t.example&&(void 0!==t.schema.examples&&t.schema.set("examples",[t.example.clone()]),void 0!==t.schema.example&&t.schema.set("example",t.example.clone()))}}}}}),vw=e=>t=>{if(t?.$$normalized)return t;if(vw.cache.has(t))return t;const n=km.refract(t),r=e(n),o=Ti(r);return vw.cache.set(t,o),o};vw.cache=new WeakMap;const bw=e=>{if(!bs(e))return e;if(e.hasKey("$$normalized"))return e;const t=[hw({operationIdNormalizer:(e,t,n)=>(0,He.Z)({operationId:e},t,n,{v2OperationIdCompatibilityMode:!1})}),fw(),dw(),mw(),gw(),yw()],n=di(e,t,{toolboxCreator:Fv,visitorOptions:{keyMap:Tv,nodeTypeGetter:Iv}});return n.set("$$normalized",!0),n},ww=Ys({props:{name:null},methods:{canRead:()=>!1,async read(){throw new Cb}}}),Ew=Ys(ww,{props:{timeout:5e3,redirects:5,withCredentials:!1},init({timeout:e=this.timeout,redirects:t=this.redirects,withCredentials:n=this.withCredentials}={}){this.timeout=e,this.redirects=t,this.withCredentials=n},methods:{canRead:e=>rb(e.uri),async read(){throw new Cb},getHttpClient(){throw new Cb}}}).compose({props:{name:"http-swagger-client",swaggerHTTPClient:ct,swaggerHTTPClientConfig:{}},init(){let{swaggerHTTPClient:e=this.swaggerHTTPClient}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.swaggerHTTPClient=e},methods:{getHttpClient(){return this.swaggerHTTPClient},async read(e){const t=this.getHttpClient(),n=new AbortController,{signal:r}=n,o=setTimeout((()=>{n.abort()}),this.timeout),s=this.getHttpClient().withCredentials||this.withCredentials?"include":"same-origin",i=0===this.redirects?"error":"follow",a=this.redirects>0?this.redirects:void 0;try{return(await t(f()({url:e.uri,signal:r,userFetch:async(e,t)=>{let n=await fetch(e,t);try{n.headers.delete("Content-Type")}catch{n=new Response(n.body,f()(f()({},n),{},{headers:new Headers(n.headers)})),n.headers.delete("Content-Type")}return n},credentials:s,redirects:i,follow:a},this.swaggerHTTPClientConfig))).text.arrayBuffer()}catch(t){throw new Mb(`Error downloading "${e.uri}"`,{cause:t})}finally{clearTimeout(o)}}}}),xw=Nb.compose({props:{name:"json-swagger-client",fileExtensions:[".json"],mediaTypes:["application/json"]},methods:{async canParse(e){const t=0===this.fileExtensions.length||this.fileExtensions.includes(e.extension),n=this.mediaTypes.includes(e.mediaType);if(!t)return!1;if(n)return!0;if(!n)try{return JSON.parse(e.toString()),!0}catch(e){return!1}return!1},async parse(e){if(this.sourceMap)throw new _b("json-swagger-client parser plugin doesn't support sourceMaps option");const t=new zo,n=e.toString();if(this.allowEmpty&&""===n.trim())return t;try{const e=Ii(JSON.parse(n));return e.classes.push("result"),t.push(e),t}catch(t){throw new _b(`Error parsing "${e.uri}"`,{cause:t})}}}}),Sw=Nb.compose({props:{name:"yaml-1-2-swagger-client",fileExtensions:[".yaml",".yml"],mediaTypes:["text/yaml","application/yaml"]},methods:{async canParse(e){const t=0===this.fileExtensions.length||this.fileExtensions.includes(e.extension),n=this.mediaTypes.includes(e.mediaType);if(!t)return!1;if(n)return!0;if(!n)try{return le.ZP.load(e.toString(),{schema:le.A8}),!0}catch(e){return!1}return!1},async parse(e){if(this.sourceMap)throw new _b("yaml-1-2-swagger-client parser plugin doesn't support sourceMaps option");const t=new zo,n=e.toString();try{const e=le.ZP.load(n,{schema:le.A8});if(this.allowEmpty&&void 0===e)return t;const r=Ii(e);return r.classes.push("result"),t.push(r),t}catch(t){throw new _b(`Error parsing "${e.uri}"`,{cause:t})}}}}),_w=Nb.compose({props:{name:"openapi-json-3-1-swagger-client",fileExtensions:[".json"],mediaTypes:new Uv(...zv.filterByFormat("generic"),...zv.filterByFormat("json")),detectionRegExp:/"openapi"\s*:\s*"(?3\.1\.(?:[1-9]\d*|0))"/},methods:{async canParse(e){const t=0===this.fileExtensions.length||this.fileExtensions.includes(e.extension),n=this.mediaTypes.includes(e.mediaType);if(!t)return!1;if(n)return!0;if(!n)try{const t=e.toString();return JSON.parse(t),this.detectionRegExp.test(t)}catch(e){return!1}return!1},async parse(e){if(this.sourceMap)throw new _b("openapi-json-3-1-swagger-client parser plugin doesn't support sourceMaps option");const t=new zo,n=e.toString();if(this.allowEmpty&&""===n.trim())return t;try{const e=JSON.parse(n),r=km.refract(e,this.refractorOpts);return r.classes.push("result"),t.push(r),t}catch(t){throw new _b(`Error parsing "${e.uri}"`,{cause:t})}}}}),jw=Nb.compose({props:{name:"openapi-yaml-3-1-swagger-client",fileExtensions:[".yaml",".yml"],mediaTypes:new Uv(...zv.filterByFormat("generic"),...zv.filterByFormat("yaml")),detectionRegExp:/(?^(["']?)openapi\2\s*:\s*(["']?)(?3\.1\.(?:[1-9]\d*|0))\3(?:\s+|$))|(?"openapi"\s*:\s*"(?3\.1\.(?:[1-9]\d*|0))")/m},methods:{async canParse(e){const t=0===this.fileExtensions.length||this.fileExtensions.includes(e.extension),n=this.mediaTypes.includes(e.mediaType);if(!t)return!1;if(n)return!0;if(!n)try{const t=e.toString();return le.ZP.load(t),this.detectionRegExp.test(t)}catch(e){return!1}return!1},async parse(e){if(this.sourceMap)throw new _b("openapi-yaml-3-1-swagger-client parser plugin doesn't support sourceMaps option");const t=new zo,n=e.toString();try{const e=le.ZP.load(n,{schema:le.A8});if(this.allowEmpty&&void 0===e)return t;const r=km.refract(e,this.refractorOpts);return r.classes.push("result"),t.push(r),t}catch(t){throw new _b(`Error parsing "${e.uri}"`,{cause:t})}}}}),Ow=Ys({props:{name:null},methods:{canDereference:()=>!1,async dereference(){throw new Cb}}});function kw(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Aw(e){for(var t=1;t=this.options.resolve.maxDepth)throw new Db(`Maximum resolution depth of ${this.options.resolve.maxDepth} has been exceeded by file "${this.reference.uri}"`);const t=this.toBaseURI(e),{refSet:n}=this.reference;if(n.has(t))return n.find(xo(t,"uri"));const r=await qb(ub(t),Aw(Aw({},this.options),{},{parse:Aw(Aw({},this.options.parse),{},{mediaType:"text/plain"})})),o=hb({uri:t,value:r,depth:this.reference.depth+1});return n.add(o),o},async ReferenceElement(e,t,n,r,o){var s,i,a,l,c;const[u,p]=this.toAncestorLineage([...o,n]);if(u.some((t=>t.has(e))))return!1;if(!this.options.resolve.external&&Ug(e))return!1;const h=await this.toReference(null===(s=e.$ref)||void 0===s?void 0:s.toValue()),f=h.uri,d=lb(f,null===(i=e.$ref)||void 0===i?void 0:i.toValue());this.indirections.push(e);const m=Ki(d);let g=Ji(m,h.value.result);if(As(g)){const t=e.meta.get("referenced-element").toValue();if(Uc(g))g=Tm.refract(g),g.setMetaProperty("referenced-element",t);else{g=this.namespace.getElementClass(t).refract(g)}}if(this.indirections.includes(g))throw new Error("Recursive Reference Object detected");if(this.indirections.length>this.options.dereference.maxDepth)throw new Fb(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);p.add(e);const y=Pw({reference:h,namespace:this.namespace,indirections:[...this.indirections],options:this.options,ancestors:u});g=await Cw(g,y,{keyMap:Tv,nodeTypeGetter:Iv}),p.delete(e),this.indirections.pop(),g=g.clone(),g.setMetaProperty("ref-fields",{$ref:null===(a=e.$ref)||void 0===a?void 0:a.toValue(),description:null===(l=e.description)||void 0===l?void 0:l.toValue(),summary:null===(c=e.summary)||void 0===c?void 0:c.toValue()}),g.setMetaProperty("ref-origin",h.uri);const v=wo(Kv,["description"],e),b=wo(Kv,["summary"],e);return v&&Gr("description",g)&&(g.description=e.description),b&&Gr("summary",g)&&(g.summary=e.summary),this.indirections.pop(),g},async PathItemElement(e,t,n,r,o){var s,i,a;const[l,c]=this.toAncestorLineage([...o,n]);if(!ms(e.$ref))return;if(l.some((t=>t.has(e))))return!1;if(!this.options.resolve.external&&Bg(e))return;const u=await this.toReference(null===(s=e.$ref)||void 0===s?void 0:s.toValue()),p=u.uri,h=lb(p,null===(i=e.$ref)||void 0===i?void 0:i.toValue());this.indirections.push(e);const f=Ki(h);let d=Ji(f,u.value.result);if(As(d)&&(d=Pm.refract(d)),this.indirections.includes(d))throw new Error("Recursive Path Item Object reference detected");if(this.indirections.length>this.options.dereference.maxDepth)throw new Fb(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);c.add(e);const m=Pw({reference:u,namespace:this.namespace,indirections:[...this.indirections],options:this.options,ancestors:l});d=await Cw(d,m,{keyMap:Tv,nodeTypeGetter:Iv}),c.delete(e),this.indirections.pop();const g=new Pm([...d.content],d.meta.clone(),d.attributes.clone());return e.forEach(((e,t,n)=>{g.remove(t.toValue()),g.content.push(n)})),g.remove("$ref"),g.setMetaProperty("ref-fields",{$ref:null===(a=e.$ref)||void 0===a?void 0:a.toValue()}),g.setMetaProperty("ref-origin",u.uri),g},async LinkElement(e){if(!ms(e.operationRef)&&!ms(e.operationId))return;if(!this.options.resolve.external&&Tg(e))return;if(ms(e.operationRef)&&ms(e.operationId))throw new Error("LinkElement operationRef and operationId fields are mutually exclusive.");let t;if(ms(e.operationRef)){var n,r,o;const s=Ki(null===(n=e.operationRef)||void 0===n?void 0:n.toValue()),i=await this.toReference(null===(r=e.operationRef)||void 0===r?void 0:r.toValue());t=Ji(s,i.value.result),As(t)&&(t=Am.refract(t)),t=new Am([...t.content],t.meta.clone(),t.attributes.clone()),t.setMetaProperty("ref-origin",i.uri),null===(o=e.operationRef)||void 0===o||o.meta.set("operation",t)}else if(ms(e.operationId)){var s,i;const n=null===(s=e.operationId)||void 0===s?void 0:s.toValue();if(t=Vb((e=>Dg(e)&&e.operationId.equals(n)),this.reference.value.result),qo(t))throw new Error(`OperationElement(operationId=${n}) not found.`);null===(i=e.operationId)||void 0===i||i.meta.set("operation",t)}},async ExampleElement(e){var t;if(!ms(e.externalValue))return;if(!this.options.resolve.external&&ms(e.externalValue))return;if(e.hasKey("value")&&ms(e.externalValue))throw new Error("ExampleElement value and externalValue fields are mutually exclusive.");const n=await this.toReference(null===(t=e.externalValue)||void 0===t?void 0:t.toValue()),r=new n.value.result.constructor(n.value.result.content,n.value.result.meta.clone(),n.value.result.attributes.clone());r.setMetaProperty("ref-origin",n.uri),e.value=r},async SchemaElement(e,t,n,r,o){var s;const[i,a]=this.toAncestorLineage([...o,n]);if(!ms(e.$ref))return;if(i.some((t=>t.has(e))))return!1;let{reference:l}=this,{uri:c}=l;const u=Yb(c,e),p=ib(u),h=vb({uri:p}),f=go((e=>e.canRead(h)),this.options.resolve.resolvers),d=!f,m=d&&c!==p;if(!this.options.resolve.external&&m)return;let g;this.indirections.push(e);try{if(f||d){g=ew(u,Qb(l.value.result))}else{l=await this.toReference(ub(u));const e=Ki(u);g=Qb(Ji(e,l.value.result))}}catch(e){if(!(d&&e instanceof zb))throw e;if(Hb(Gb(u))){l=await this.toReference(ub(u)),c=l.uri;const e=Gb(u);g=Zb(e,Qb(l.value.result))}else{l=await this.toReference(ub(u)),c=l.uri;const e=Ki(u);g=Qb(Ji(e,l.value.result))}}if(this.indirections.includes(g))throw new Error("Recursive Schema Object reference detected");if(this.indirections.length>this.options.dereference.maxDepth)throw new Fb(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);a.add(e);const y=Pw({reference:l,namespace:this.namespace,indirections:[...this.indirections],options:this.options,ancestors:i});if(g=await Cw(g,y,{keyMap:Tv,nodeTypeGetter:Iv}),a.delete(e),this.indirections.pop(),Kg(g)){var v;const t=g.clone();return t.setMetaProperty("ref-fields",{$ref:null===(v=e.$ref)||void 0===v?void 0:v.toValue()}),t.setMetaProperty("ref-origin",l.uri),t}const b=new Lm([...g.content],g.meta.clone(),g.attributes.clone());return e.forEach(((e,t,n)=>{b.remove(t.toValue()),b.content.push(n)})),b.remove("$ref"),b.setMetaProperty("ref-fields",{$ref:null===(s=e.$ref)||void 0===s?void 0:s.toValue()}),b.setMetaProperty("ref-origin",l.uri),b}}}),Nw=Pw,Iw=fi[Symbol.for("nodejs.util.promisify.custom")],Tw=Ys(Ow,{init(){this.name="openapi-3-1"},methods:{canDereference(e){var t;return"text/plain"!==e.mediaType?zv.includes(e.mediaType):Mg(null===(t=e.parseResult)||void 0===t?void 0:t.result)},async dereference(e,t){const n=zs(Rv),r=kr(db(),t.dereference.refSet);let o;r.has(e.uri)?o=r.find(xo(e.uri,"uri")):(o=hb({uri:e.uri,value:e.parseResult}),r.add(o));const s=Nw({reference:o,namespace:n,options:t}),i=await Iw(r.rootRef.value,s,{keyMap:Tv,nodeTypeGetter:Iv});return null===t.dereference.refSet&&r.clean(),i}}}),Rw=Tw,Mw=e=>{const t=(e=>e.slice(2))(e);return t.reduce(((e,n,r)=>{if(Es(n)){const t=String(n.key.toValue());e.push(t)}else if(ws(t[r-2])){const o=t[r-2].content.indexOf(n);e.push(o)}return e}),[])},Dw=e=>{if(null==e.cause)return e;let{cause:t}=e;for(;null!=t.cause;)t=t.cause;return t},Fw=ue("SchemaRefError",(function(e,t,n){this.originalError=n,Object.assign(this,t||{})})),{wrapError:Lw}=ke,Bw=fi[Symbol.for("nodejs.util.promisify.custom")],$w=Nw.compose({props:{useCircularStructures:!0,allowMetaPatches:!1,basePath:null},init(e){let{allowMetaPatches:t=this.allowMetaPatches,useCircularStructures:n=this.useCircularStructures,basePath:r=this.basePath}=e;this.allowMetaPatches=t,this.useCircularStructures=n,this.basePath=r},methods:{async ReferenceElement(e,t,n,r,o){try{const[t,r]=this.toAncestorLineage([...o,n]);if(Ns(["cycle"],e.$ref))return!1;if(t.some((t=>t.has(e))))return!1;if(!this.options.resolve.external&&Ug(e))return!1;const s=await this.toReference(e.$ref.toValue()),i=s.uri,a=lb(i,e.$ref.toValue());this.indirections.push(e);const l=Ki(a);let c=Ji(l,s.value.result);if(As(c)){const t=e.meta.get("referenced-element").toValue();if(Uc(c))c=Tm.refract(c),c.setMetaProperty("referenced-element",t);else{const e=this.namespace.getElementClass(t);c=e.refract(c)}}if(this.indirections.includes(c))throw new Error("Recursive JSON Pointer detected");if(this.indirections.length>this.options.dereference.maxDepth)throw new Fb(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);if(!this.useCircularStructures){if(t.some((e=>e.has(c)))){if(rb(i)||nb(i)){const t=new Tm({$ref:a},e.meta.clone(),e.attributes.clone());return t.get("$ref").classes.push("cycle"),t}return!1}}r.add(e);const u=$w({reference:s,namespace:this.namespace,indirections:[...this.indirections],options:this.options,ancestors:t,allowMetaPatches:this.allowMetaPatches,useCircularStructures:this.useCircularStructures,basePath:this.basePath??[...Mw([...o,n,e]),"$ref"]});c=await Bw(c,u,{keyMap:Tv,nodeTypeGetter:Iv}),r.delete(e),this.indirections.pop(),c=c.clone(),c.setMetaProperty("ref-fields",{$ref:e.$ref?.toValue(),description:e.description?.toValue(),summary:e.summary?.toValue()}),c.setMetaProperty("ref-origin",s.uri);const p=void 0!==e.description,h=void 0!==e.summary;if(p&&"description"in c&&(c.description=e.description),h&&"summary"in c&&(c.summary=e.summary),this.allowMetaPatches&&bs(c)){const e=c;if(void 0===e.get("$$ref")){const t=lb(i,a);e.set("$$ref",t)}}return c}catch(t){const r=Dw(t),s=Lw(r,{baseDoc:this.reference.uri,$ref:e.$ref.toValue(),pointer:Ki(e.$ref.toValue()),fullPath:this.basePath??[...Mw([...o,n,e]),"$ref"]});return void this.options.dereference.dereferenceOpts?.errors?.push?.(s)}},async PathItemElement(e,t,n,r,o){try{const[t,r]=this.toAncestorLineage([...o,n]);if(!ms(e.$ref))return;if(Ns(["cycle"],e.$ref))return!1;if(t.some((t=>t.has(e))))return!1;if(!this.options.resolve.external&&Bg(e))return;const s=await this.toReference(e.$ref.toValue()),i=s.uri,a=lb(i,e.$ref.toValue());this.indirections.push(e);const l=Ki(a);let c=Ji(l,s.value.result);if(As(c)&&(c=Pm.refract(c)),this.indirections.includes(c))throw new Error("Recursive JSON Pointer detected");if(this.indirections.length>this.options.dereference.maxDepth)throw new Fb(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);if(!this.useCircularStructures){if(t.some((e=>e.has(c)))){if(rb(i)||nb(i)){const t=new Pm({$ref:a},e.meta.clone(),e.attributes.clone());return t.get("$ref").classes.push("cycle"),t}return!1}}r.add(e);const u=$w({reference:s,namespace:this.namespace,indirections:[...this.indirections],options:this.options,ancestors:t,allowMetaPatches:this.allowMetaPatches,useCircularStructures:this.useCircularStructures,basePath:this.basePath??[...Mw([...o,n,e]),"$ref"]});c=await Bw(c,u,{keyMap:Tv,nodeTypeGetter:Iv}),r.delete(e),this.indirections.pop();const p=new Pm([...c.content],c.meta.clone(),c.attributes.clone());if(e.forEach(((e,t,n)=>{p.remove(t.toValue()),p.content.push(n)})),p.remove("$ref"),p.setMetaProperty("ref-fields",{$ref:e.$ref?.toValue()}),p.setMetaProperty("ref-origin",s.uri),this.allowMetaPatches&&void 0===p.get("$$ref")){const e=lb(i,a);p.set("$$ref",e)}return p}catch(t){const r=Dw(t),s=Lw(r,{baseDoc:this.reference.uri,$ref:e.$ref.toValue(),pointer:Ki(e.$ref.toValue()),fullPath:this.basePath??[...Mw([...o,n,e]),"$ref"]});return void this.options.dereference.dereferenceOpts?.errors?.push?.(s)}},async SchemaElement(e,t,n,r,o){try{const[t,r]=this.toAncestorLineage([...o,n]);if(!ms(e.$ref))return;if(Ns(["cycle"],e.$ref))return!1;if(t.some((t=>t.has(e))))return!1;let{reference:s}=this,{uri:i}=s;const a=Yb(i,e),l=ib(a),c=vb({uri:l}),u=!this.options.resolve.resolvers.some((e=>e.canRead(c))),p=!u,h=p&&i!==l;if(!this.options.resolve.external&&h)return;let f;this.indirections.push(e);try{if(u||p){f=ew(a,Qb(s.value.result))}else{s=await this.toReference(ub(a)),i=s.uri;const e=Ki(a);f=Qb(Ji(e,s.value.result))}}catch(e){if(!(p&&e instanceof zb))throw e;if(Hb(Gb(a))){s=await this.toReference(ub(a)),i=s.uri;const e=Gb(a);f=Zb(e,Qb(s.value.result))}else{s=await this.toReference(ub(a)),i=s.uri;const e=Ki(a);f=Qb(Ji(e,s.value.result))}}if(this.indirections.includes(f))throw new Error("Recursive Schema Object reference detected");if(this.indirections.length>this.options.dereference.maxDepth)throw new Fb(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);if(!this.useCircularStructures){if(t.some((e=>e.has(f)))){if(rb(i)||nb(i)){const t=lb(i,a),n=new Lm({$ref:t},e.meta.clone(),e.attributes.clone());return n.get("$ref").classes.push("cycle"),n}return!1}}r.add(e);const d=$w({reference:s,namespace:this.namespace,indirections:[...this.indirections],options:this.options,useCircularStructures:this.useCircularStructures,allowMetaPatches:this.allowMetaPatches,ancestors:t,basePath:this.basePath??[...Mw([...o,n,e]),"$ref"]});if(f=await Bw(f,d,{keyMap:Tv,nodeTypeGetter:Iv}),r.delete(e),this.indirections.pop(),Kg(f)){const t=f.clone();return t.setMetaProperty("ref-fields",{$ref:e.$ref?.toValue()}),t.setMetaProperty("ref-origin",i),t}const m=new Lm([...f.content],f.meta.clone(),f.attributes.clone());if(e.forEach(((e,t,n)=>{m.remove(t.toValue()),m.content.push(n)})),m.remove("$ref"),m.setMetaProperty("ref-fields",{$ref:e.$ref?.toValue()}),m.setMetaProperty("ref-origin",i),this.allowMetaPatches&&void 0===m.get("$$ref")){const e=lb(i,a);m.set("$$ref",e)}return m}catch(t){const r=Dw(t),s=new Fw(`Could not resolve reference: ${r.message}`,{baseDoc:this.reference.uri,$ref:e.$ref.toValue(),fullPath:this.basePath??[...Mw([...o,n,e]),"$ref"]},r);return void this.options.dereference.dereferenceOpts?.errors?.push?.(s)}},async LinkElement(){},async ExampleElement(e,t,n,r,o){try{return await Nw.compose.methods.ExampleElement.call(this,e,t,n,r,o)}catch(t){const r=Dw(t),s=Lw(r,{baseDoc:this.reference.uri,externalValue:e.externalValue?.toValue(),fullPath:this.basePath??[...Mw([...o,n,e]),"externalValue"]});return void this.options.dereference.dereferenceOpts?.errors?.push?.(s)}}}}),qw=$w,Uw=Rw.compose.bind(),zw=Uw({init(e){let{parameterMacro:t,options:n}=e;this.parameterMacro=t,this.options=n},props:{parameterMacro:null,options:null,macroOperation:null,OperationElement:{enter(e){this.macroOperation=e},leave(){this.macroOperation=null}},ParameterElement:{leave(e,t,n,r,o){const s=null===this.macroOperation?null:Ti(this.macroOperation),i=Ti(e);try{const t=this.parameterMacro(s,i);e.set("default",t)}catch(e){const t=new Error(e,{cause:e});t.fullPath=Mw([...o,n]),this.options.dereference.dereferenceOpts?.errors?.push?.(t)}}}}}),Vw=Uw({init(e){let{modelPropertyMacro:t,options:n}=e;this.modelPropertyMacro=t,this.options=n},props:{modelPropertyMacro:null,options:null,SchemaElement:{leave(e,t,n,r,o){void 0!==e.properties&&bs(e.properties)&&e.properties.forEach((t=>{if(bs(t))try{const e=this.modelPropertyMacro(Ti(t));t.set("default",e)}catch(t){const r=new Error(t,{cause:t});r.fullPath=[...Mw([...o,n,e]),"properties"],this.options.dereference.dereferenceOpts?.errors?.push?.(r)}}))}}}});function Ww(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Jw(e){for(var t=1;t{const t=e.meta.clone(),n=e.attributes.clone();return new e.constructor(void 0,t,n)},Hw=e=>new Pt.c6(e.key,e.value,e.meta.clone(),e.attributes.clone()),Gw=(e,t)=>t.clone&&t.isMergeableElement(e)?Xw(Kw(e),e,t):e,Zw=(e,t,n)=>e.concat(t)["fantasy-land/map"]((e=>Gw(e,n))),Yw=(e,t,n)=>{const r=bs(e)?Kw(e):Kw(t);return bs(e)&&e.forEach(((e,t,o)=>{const s=Hw(o);s.value=Gw(e,n),r.content.push(s)})),t.forEach(((t,o,s)=>{const i=o.toValue();let a;if(bs(e)&&e.hasKey(i)&&n.isMergeableElement(t)){const r=e.get(i);a=Hw(s),a.value=((e,t)=>{if("function"!=typeof t.customMerge)return Xw;const n=t.customMerge(e,t);return"function"==typeof n?n:Xw})(o,n)(r,t)}else a=Hw(s),a.value=Gw(t,n);r.remove(i),r.content.push(a)})),r};function Xw(e,t,n){var r,o,s;const i={clone:!0,isMergeableElement:e=>bs(e)||ws(e),arrayElementMerge:Zw,objectElementMerge:Yw,customMerge:void 0},a=Jw(Jw({},i),n);a.isMergeableElement=null!==(r=a.isMergeableElement)&&void 0!==r?r:i.isMergeableElement,a.arrayElementMerge=null!==(o=a.arrayElementMerge)&&void 0!==o?o:i.arrayElementMerge,a.objectElementMerge=null!==(s=a.objectElementMerge)&&void 0!==s?s:i.objectElementMerge;const l=ws(t);return l===ws(e)?l&&"function"==typeof a.arrayElementMerge?a.arrayElementMerge(e,t,a):a.objectElementMerge(e,t,a):Gw(t,a)}Xw.all=(e,t)=>{if(!Array.isArray(e))throw new Error("first argument should be an array");return 0===e.length?new Pt.Sb:e.reduce(((e,n)=>Xw(e,n,t)),Kw(e[0]))};const Qw=Uw({init(e){let{options:t}=e;this.options=t},props:{options:null,SchemaElement:{leave(e,t,n,r,o){if(void 0===e.allOf)return;if(!ws(e.allOf)){const t=new TypeError("allOf must be an array");return t.fullPath=[...Mw([...o,n,e]),"allOf"],void this.options.dereference.dereferenceOpts?.errors?.push?.(t)}if(e.allOf.isEmpty)return new Lm(e.content.filter((e=>"allOf"!==e.key.toValue())),e.meta.clone(),e.attributes.clone());if(!e.allOf.content.every(Jg)){const t=new TypeError("Elements in allOf must be objects");return t.fullPath=[...Mw([...o,n,e]),"allOf"],void this.options.dereference.dereferenceOpts?.errors?.push?.(t)}const s=Xw.all([...e.allOf.content,e]);if(e.hasKey("$$ref")||s.remove("$$ref"),e.hasKey("example")){s.getMember("example").value=e.get("example")}if(e.hasKey("examples")){s.getMember("examples").value=e.get("examples")}return s.remove("allOf"),s}}}}),eE=fi[Symbol.for("nodejs.util.promisify.custom")],tE=Rw.compose({props:{useCircularStructures:!0,allowMetaPatches:!1,parameterMacro:null,modelPropertyMacro:null,mode:"non-strict",ancestors:null},init(){let{useCircularStructures:e=this.useCircularStructures,allowMetaPatches:t=this.allowMetaPatches,parameterMacro:n=this.parameterMacro,modelPropertyMacro:r=this.modelPropertyMacro,mode:o=this.mode,ancestors:s=[]}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.name="openapi-3-1-swagger-client",this.useCircularStructures=e,this.allowMetaPatches=t,this.parameterMacro=n,this.modelPropertyMacro=r,this.mode=o,this.ancestors=[...s]},methods:{async dereference(e,t){const n=[],r=zs(Rv),o=t.dereference.refSet??db();let s;o.has(e.uri)?s=o.find((t=>t.uri===e.uri)):(s=hb({uri:e.uri,value:e.parseResult}),o.add(s));const i=qw({reference:s,namespace:r,options:t,useCircularStructures:this.useCircularStructures,allowMetaPatches:this.allowMetaPatches,ancestors:this.ancestors});if(n.push(i),"function"==typeof this.parameterMacro){const e=zw({parameterMacro:this.parameterMacro,options:t});n.push(e)}if("function"==typeof this.modelPropertyMacro){const e=Vw({modelPropertyMacro:this.modelPropertyMacro,options:t});n.push(e)}if("strict"!==this.mode){const e=Qw({options:t});n.push(e)}const a=ri(n,{nodeTypeGetter:Iv}),l=await eE(o.rootRef.value,a,{keyMap:Tv,nodeTypeGetter:Iv});return null===t.dereference.refSet&&o.clean(),l}}}),nE=tE,rE=async e=>{const{spec:t,timeout:n,redirects:r,requestInterceptor:o,responseInterceptor:s,pathDiscriminator:i=[],allowMetaPatches:a=!1,useCircularStructures:l=!1,skipNormalization:c=!1,parameterMacro:u=null,modelPropertyMacro:p=null,mode:h="non-strict"}=e;try{const{cache:d}=rE,m=rb(ab())?ab():"https://smartbear.com/",g=Et(e),y=lb(m,g);let v;d.has(t)?v=d.get(t):(v=km.refract(t),v.classes.push("result"),d.set(t,v));const b=new zo([v]),w=0===(f=i).length?"":`/${f.map(Vi).join("/")}`,E=""===w?"":`#${w}`,x=Ji(w,v),S=hb({uri:y,value:b}),_=db({refs:[S]});""!==w&&(_.rootRef=null);const j=[new WeakSet([x])],O=[],k=((e,t,n)=>Ei({element:n}).transclude(e,t))(x,await Ab(x,{resolve:{baseURI:`${y}${E}`,resolvers:[Ew({timeout:n||1e4,redirects:r||10})],resolverOpts:{swaggerHTTPClientConfig:{requestInterceptor:o,responseInterceptor:s}},strategies:[lw()]},parse:{mediaType:zv.latest(),parsers:[_w({allowEmpty:!1,sourceMap:!1}),jw({allowEmpty:!1,sourceMap:!1}),xw({allowEmpty:!1,sourceMap:!1}),Sw({allowEmpty:!1,sourceMap:!1}),Ib({allowEmpty:!1,sourceMap:!1})]},dereference:{maxDepth:100,strategies:[nE({allowMetaPatches:a,useCircularStructures:l,parameterMacro:u,modelPropertyMacro:p,mode:h,ancestors:j})],refSet:_,dereferenceOpts:{errors:O}}}),v),A=c?k:bw(k);return{spec:Ti(A),errors:O}}catch(e){if(e instanceof Ui||e instanceof zi)return{spec:null,errors:[]};throw e}var f};rE.cache=new WeakMap;const oE=rE,sE={name:"openapi-3-1-apidom",match(e){let{spec:t}=e;return Ot(t)},normalize(e){let{spec:t}=e;return vw(bw)(t)},resolve:async e=>oE(e)},iE=e=>async t=>(async e=>{const{spec:t,requestInterceptor:n,responseInterceptor:r}=e,o=Et(e),s=xt(e),i=t||await Ze(s,{requestInterceptor:n,responseInterceptor:r})(o),a=f()(f()({},e),{},{spec:i});return e.strategies.find((e=>e.match(a))).resolve(a)})(f()(f()({},e),t)),aE=iE({strategies:[Ct,At,_t]});var lE=n(88436),cE=n.n(lE),uE=n(27361),pE=n.n(uE),hE=n(76489);function fE(e){return"[object Object]"===Object.prototype.toString.call(e)}function dE(e){var t,n;return!1!==fE(e)&&(void 0===(t=e.constructor)||!1!==fE(n=t.prototype)&&!1!==n.hasOwnProperty("isPrototypeOf"))}const mE={body:function(e){let{req:t,value:n}=e;t.body=n},header:function(e){let{req:t,parameter:n,value:r}=e;t.headers=t.headers||{},void 0!==r&&(t.headers[n.name]=r)},query:function(e){let{req:t,value:n,parameter:r}=e;t.query=t.query||{},!1===n&&"boolean"===r.type&&(n="false");0===n&&["number","integer"].indexOf(r.type)>-1&&(n="0");if(n)t.query[r.name]={collectionFormat:r.collectionFormat,value:n};else if(r.allowEmptyValue&&void 0!==n){const e=r.name;t.query[e]=t.query[e]||{},t.query[e].allowEmptyValue=!0}},path:function(e){let{req:t,value:n,parameter:r}=e;t.url=t.url.split(`{${r.name}}`).join(encodeURIComponent(n))},formData:function(e){let{req:t,value:n,parameter:r}=e;(n||r.allowEmptyValue)&&(t.form=t.form||{},t.form[r.name]={value:n,allowEmptyValue:r.allowEmptyValue,collectionFormat:r.collectionFormat})}};function gE(e,t){return t.includes("application/json")?"string"==typeof e?e:JSON.stringify(e):e.toString()}function yE(e){let{req:t,value:n,parameter:r}=e;const{name:o,style:s,explode:i,content:a}=r;if(a){const e=Object.keys(a)[0];return void(t.url=t.url.split(`{${o}}`).join(st(gE(n,e),{escape:!0})))}const l=it({key:r.name,value:n,style:s||"simple",explode:i||!1,escape:!0});t.url=t.url.split(`{${o}}`).join(l)}function vE(e){let{req:t,value:n,parameter:r}=e;if(t.query=t.query||{},r.content){const e=gE(n,Object.keys(r.content)[0]);if(e)t.query[r.name]=e;else if(r.allowEmptyValue&&void 0!==n){const e=r.name;t.query[e]=t.query[e]||{},t.query[e].allowEmptyValue=!0}}else if(!1===n&&(n="false"),0===n&&(n="0"),n){const{style:e,explode:o,allowReserved:s}=r;t.query[r.name]={value:n,serializationOption:{style:e,explode:o,allowReserved:s}}}else if(r.allowEmptyValue&&void 0!==n){const e=r.name;t.query[e]=t.query[e]||{},t.query[e].allowEmptyValue=!0}}const bE=["accept","authorization","content-type"];function wE(e){let{req:t,parameter:n,value:r}=e;if(t.headers=t.headers||{},!(bE.indexOf(n.name.toLowerCase())>-1))if(n.content){const e=Object.keys(n.content)[0];t.headers[n.name]=gE(r,e)}else void 0!==r&&(t.headers[n.name]=it({key:n.name,value:r,style:n.style||"simple",explode:void 0!==n.explode&&n.explode,escape:!1}))}function EE(e){let{req:t,parameter:n,value:r}=e;t.headers=t.headers||{};const o=typeof r;if(n.content){const e=Object.keys(n.content)[0];t.headers.Cookie=`${n.name}=${gE(r,e)}`}else if("undefined"!==o){const e="object"===o&&!Array.isArray(r)&&n.explode?"":`${n.name}=`;t.headers.Cookie=e+it({key:n.name,value:r,escape:!1,style:n.style||"form",explode:void 0!==n.explode&&n.explode})}}const xE="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:window,{btoa:SE}=xE,_E=SE;function jE(e,t){const{operation:n,requestBody:r,securities:o,spec:s,attachContentTypeForEmptyPayload:i}=e;let{requestContentType:a}=e;t=function(e){let{request:t,securities:n={},operation:r={},spec:o}=e;const s=f()({},t),{authorized:i={}}=n,a=r.security||o.security||[],l=i&&!!Object.keys(i).length,c=pE()(o,["components","securitySchemes"])||{};if(s.headers=s.headers||{},s.query=s.query||{},!Object.keys(n).length||!l||!a||Array.isArray(r.security)&&!r.security.length)return t;return a.forEach((e=>{Object.keys(e).forEach((e=>{const t=i[e],n=c[e];if(!t)return;const r=t.value||t,{type:o}=n;if(t)if("apiKey"===o)"query"===n.in&&(s.query[n.name]=r),"header"===n.in&&(s.headers[n.name]=r),"cookie"===n.in&&(s.cookies[n.name]=r);else if("http"===o){if(/^basic$/i.test(n.scheme)){const e=r.username||"",t=r.password||"",n=_E(`${e}:${t}`);s.headers.Authorization=`Basic ${n}`}/^bearer$/i.test(n.scheme)&&(s.headers.Authorization=`Bearer ${r}`)}else if("oauth2"===o||"openIdConnect"===o){const e=t.token||{},r=e[n["x-tokenName"]||"access_token"];let o=e.token_type;o&&"bearer"!==o.toLowerCase()||(o="Bearer"),s.headers.Authorization=`${o} ${r}`}}))})),s}({request:t,securities:o,operation:n,spec:s});const l=n.requestBody||{},c=Object.keys(l.content||{}),u=a&&c.indexOf(a)>-1;if(r||i){if(a&&u)t.headers["Content-Type"]=a;else if(!a){const e=c[0];e&&(t.headers["Content-Type"]=e,a=e)}}else a&&u&&(t.headers["Content-Type"]=a);if(!e.responseContentType&&n.responses){const e=Object.entries(n.responses).filter((e=>{let[t,n]=e;const r=parseInt(t,10);return r>=200&&r<300&&dE(n.content)})).reduce(((e,t)=>{let[,n]=t;return e.concat(Object.keys(n.content))}),[]);e.length>0&&(t.headers.accept=e.join(", "))}if(r)if(a){if(c.indexOf(a)>-1)if("application/x-www-form-urlencoded"===a||"multipart/form-data"===a)if("object"==typeof r){const e=(l.content[a]||{}).encoding||{};t.form={},Object.keys(r).forEach((n=>{t.form[n]={value:r[n],encoding:e[n]||{}}}))}else t.form=r;else t.body=r}else t.body=r;return t}function OE(e,t){const{spec:n,operation:r,securities:o,requestContentType:s,responseContentType:i,attachContentTypeForEmptyPayload:a}=e;if(t=function(e){let{request:t,securities:n={},operation:r={},spec:o}=e;const s=f()({},t),{authorized:i={},specSecurity:a=[]}=n,l=r.security||a,c=i&&!!Object.keys(i).length,u=o.securityDefinitions;if(s.headers=s.headers||{},s.query=s.query||{},!Object.keys(n).length||!c||!l||Array.isArray(r.security)&&!r.security.length)return t;return l.forEach((e=>{Object.keys(e).forEach((e=>{const t=i[e];if(!t)return;const{token:n}=t,r=t.value||t,o=u[e],{type:a}=o,l=o["x-tokenName"]||"access_token",c=n&&n[l];let p=n&&n.token_type;if(t)if("apiKey"===a){const e="query"===o.in?"query":"headers";s[e]=s[e]||{},s[e][o.name]=r}else if("basic"===a)if(r.header)s.headers.authorization=r.header;else{const e=r.username||"",t=r.password||"";r.base64=_E(`${e}:${t}`),s.headers.authorization=`Basic ${r.base64}`}else"oauth2"===a&&c&&(p=p&&"bearer"!==p.toLowerCase()?p:"Bearer",s.headers.authorization=`${p} ${c}`)}))})),s}({request:t,securities:o,operation:r,spec:n}),t.body||t.form||a)s?t.headers["Content-Type"]=s:Array.isArray(r.consumes)?[t.headers["Content-Type"]]=r.consumes:Array.isArray(n.consumes)?[t.headers["Content-Type"]]=n.consumes:r.parameters&&r.parameters.filter((e=>"file"===e.type)).length?t.headers["Content-Type"]="multipart/form-data":r.parameters&&r.parameters.filter((e=>"formData"===e.in)).length&&(t.headers["Content-Type"]="application/x-www-form-urlencoded");else if(s){const e=r.parameters&&r.parameters.filter((e=>"body"===e.in)).length>0,n=r.parameters&&r.parameters.filter((e=>"formData"===e.in)).length>0;(e||n)&&(t.headers["Content-Type"]=s)}return!i&&Array.isArray(r.produces)&&r.produces.length>0&&(t.headers.accept=r.produces.join(", ")),t}function kE(e,t){return`${t.toLowerCase()}-${e}`}const AE=["http","fetch","spec","operationId","pathName","method","parameters","securities"],CE=e=>Array.isArray(e)?e:[],PE=ue("OperationNotFoundError",(function(e,t,n){this.originalError=n,Object.assign(this,t||{})})),NE=(e,t)=>t.filter((t=>t.name===e)),IE=e=>{const t={};e.forEach((e=>{t[e.in]||(t[e.in]={}),t[e.in][e.name]=e}));const n=[];return Object.keys(t).forEach((e=>{Object.keys(t[e]).forEach((r=>{n.push(t[e][r])}))})),n},TE={buildRequest:ME};function RE(e){let{http:t,fetch:n,spec:r,operationId:o,pathName:s,method:i,parameters:a,securities:l}=e,c=cE()(e,AE);const u=t||n||ct;s&&i&&!o&&(o=kE(s,i));const p=TE.buildRequest(f()({spec:r,operationId:o,parameters:a,securities:l,http:u},c));return p.body&&(dE(p.body)||Array.isArray(p.body))&&(p.body=JSON.stringify(p.body)),u(p)}function ME(e){const{spec:t,operationId:n,responseContentType:r,scheme:o,requestInterceptor:s,responseInterceptor:i,contextUrl:a,userFetch:l,server:c,serverVariables:p,http:h,signal:d}=e;let{parameters:m,parameterBuilders:g}=e;const y=kt(t);g||(g=y?u:mE);let v={url:"",credentials:h&&h.withCredentials?"include":"same-origin",headers:{},cookies:{}};d&&(v.signal=d),s&&(v.requestInterceptor=s),i&&(v.responseInterceptor=i),l&&(v.userFetch=l);const b=function(e,t){return e&&e.paths?function(e,t){return function(e,t,n){if(!e||"object"!=typeof e||!e.paths||"object"!=typeof e.paths)return null;const{paths:r}=e;for(const o in r)for(const s in r[o]){if("PARAMETERS"===s.toUpperCase())continue;const i=r[o][s];if(!i||"object"!=typeof i)continue;const a={spec:e,pathName:o,method:s.toUpperCase(),operation:i},l=t(a);if(n&&l)return a}}(e,t,!0)||null}(e,(e=>{let{pathName:n,method:r,operation:o}=e;if(!o||"object"!=typeof o)return!1;const s=o.operationId;return[(0,He.Z)(o,n,r),kE(n,r),s].some((e=>e&&e===t))})):null}(t,n);if(!b)throw new PE(`Operation ${n} not found`);const{operation:w={},method:E,pathName:x}=b;if(v.url+=function(e){const t=kt(e.spec);return t?function(e){let{spec:t,pathName:n,method:r,server:o,contextUrl:s,serverVariables:i={}}=e;const a=pE()(t,["paths",n,(r||"").toLowerCase(),"servers"])||pE()(t,["paths",n,"servers"])||pE()(t,["servers"]);let l="",c=null;if(o&&a&&a.length){const e=a.map((e=>e.url));e.indexOf(o)>-1&&(l=o,c=a[e.indexOf(o)])}!l&&a&&a.length&&(l=a[0].url,[c]=a);if(l.indexOf("{")>-1){(function(e){const t=[],n=/{([^}]+)}/g;let r;for(;r=n.exec(e);)t.push(r[1]);return t})(l).forEach((e=>{if(c.variables&&c.variables[e]){const t=c.variables[e],n=i[e]||t.default,r=new RegExp(`{${e}}`,"g");l=l.replace(r,n)}}))}return function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const n=e&&t?ce.parse(ce.resolve(t,e)):ce.parse(e),r=ce.parse(t),o=DE(n.protocol)||DE(r.protocol)||"",s=n.host||r.host,i=n.pathname||"";let a;a=o&&s?`${o}://${s+i}`:i;return"/"===a[a.length-1]?a.slice(0,-1):a}(l,s)}(e):function(e){let{spec:t,scheme:n,contextUrl:r=""}=e;const o=ce.parse(r),s=Array.isArray(t.schemes)?t.schemes[0]:null,i=n||s||DE(o.protocol)||"http",a=t.host||o.host||"",l=t.basePath||"";let c;c=i&&a?`${i}://${a+l}`:l;return"/"===c[c.length-1]?c.slice(0,-1):c}(e)}({spec:t,scheme:o,contextUrl:a,server:c,serverVariables:p,pathName:x,method:E}),!n)return delete v.cookies,v;v.url+=x,v.method=`${E}`.toUpperCase(),m=m||{};const S=t.paths[x]||{};r&&(v.headers.accept=r);const _=IE([].concat(CE(w.parameters)).concat(CE(S.parameters)));_.forEach((e=>{const n=g[e.in];let r;if("body"===e.in&&e.schema&&e.schema.properties&&(r=m),r=e&&e.name&&m[e.name],void 0===r?r=e&&e.name&&m[`${e.in}.${e.name}`]:NE(e.name,_).length>1&&console.warn(`Parameter '${e.name}' is ambiguous because the defined spec has more than one parameter with the name: '${e.name}' and the passed-in parameter values did not define an 'in' value.`),null!==r){if(void 0!==e.default&&void 0===r&&(r=e.default),void 0===r&&e.required&&!e.allowEmptyValue)throw new Error(`Required parameter ${e.name} is not provided`);if(y&&e.schema&&"object"===e.schema.type&&"string"==typeof r)try{r=JSON.parse(r)}catch(e){throw new Error("Could not parse object parameter value string as JSON")}n&&n({req:v,parameter:e,value:r,operation:w,spec:t})}}));const j=f()(f()({},e),{},{operation:w});if(v=y?jE(j,v):OE(j,v),v.cookies&&Object.keys(v.cookies).length){const e=Object.keys(v.cookies).reduce(((e,t)=>{const n=v.cookies[t];return e+(e?"&":"")+hE.serialize(t,n)}),"");v.headers.Cookie=e}return v.cookies&&delete v.cookies,wt(v),v}const DE=e=>e?e.replace(/\W/g,""):null;const FE=e=>async function(t,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return async function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{returnEntireTree:r,baseDoc:o,requestInterceptor:s,responseInterceptor:i,parameterMacro:a,modelPropertyMacro:l,useCircularStructures:c,strategies:u}=n,p={spec:e,pathDiscriminator:t,baseDoc:o,requestInterceptor:s,responseInterceptor:i,parameterMacro:a,modelPropertyMacro:l,useCircularStructures:c,strategies:u},h=u.find((e=>e.match(p))).normalize(p),d=await aE(f()(f()({},p),{},{spec:h,allowMetaPatches:!0,skipNormalization:!0}));return!r&&Array.isArray(t)&&t.length&&(d.spec=pE()(d.spec,t)||null),d}(t,n,f()(f()({},e),r))};FE({strategies:[Ct,At,_t]});var LE=n(34852);function BE(e){let{configs:t,getConfigs:n}=e;return{fn:{fetch:(r=ct,o=t.preFetch,s=t.postFetch,s=s||(e=>e),o=o||(e=>e),e=>("string"==typeof e&&(e={url:e}),lt.mergeInQueryOrForm(e),e=o(e),s(r(e)))),buildRequest:ME,execute:RE,resolve:iE({strategies:[sE,Ct,At,_t]}),resolveSubtree:async function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const o=n(),s={modelPropertyMacro:o.modelPropertyMacro,parameterMacro:o.parameterMacro,requestInterceptor:o.requestInterceptor,responseInterceptor:o.responseInterceptor,strategies:[sE,Ct,At,_t]};return FE(s)(e,t,r)},serializeRes:pt,opId:He.Z},statePlugins:{configs:{wrapActions:{loaded:LE.loaded}}}};var r,o,s}},98525:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(90242);function o(){return{fn:{shallowEqualKeys:r.be}}}},48347:(e,t,n)=>{"use strict";n.r(t),n.d(t,{getDisplayName:()=>r});const r=e=>e.displayName||e.name||"Component"},73420:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>c});var r=n(35627),o=n.n(r),s=n(90242),i=n(11092),a=n(48347),l=n(60314);const c=e=>{let{getComponents:t,getStore:n,getSystem:r}=e;const c=(u=(0,i.getComponent)(r,n,t),(0,s.HP)(u,(function(){for(var e=arguments.length,t=new Array(e),n=0;n(0,l.Z)(e,(function(){for(var e=arguments.length,t=new Array(e),n=0;n{"use strict";n.r(t),n.d(t,{getComponent:()=>X,render:()=>Y,withMappedContainer:()=>Z});var r=n(23101),o=n.n(r),s=n(28222),i=n.n(s),a=n(67294),l=n(73935),c=n(97779),u=n(61688),p=n(52798);let h=function(e){e()};const f=()=>h,d=(0,a.createContext)(null);let m=null;var g=n(87462),y=n(63366),v=n(8679),b=n.n(v),w=n(59864);const E=["initMapStateToProps","initMapDispatchToProps","initMergeProps"];function x(e,t,n,r,{areStatesEqual:o,areOwnPropsEqual:s,areStatePropsEqual:i}){let a,l,c,u,p,h=!1;function f(h,f){const d=!s(f,l),m=!o(h,a,f,l);return a=h,l=f,d&&m?(c=e(a,l),t.dependsOnOwnProps&&(u=t(r,l)),p=n(c,u,l),p):d?(e.dependsOnOwnProps&&(c=e(a,l)),t.dependsOnOwnProps&&(u=t(r,l)),p=n(c,u,l),p):m?function(){const t=e(a,l),r=!i(t,c);return c=t,r&&(p=n(c,u,l)),p}():p}return function(o,s){return h?f(o,s):(a=o,l=s,c=e(a,l),u=t(r,l),p=n(c,u,l),h=!0,p)}}function S(e){return function(t){const n=e(t);function r(){return n}return r.dependsOnOwnProps=!1,r}}function _(e){return e.dependsOnOwnProps?Boolean(e.dependsOnOwnProps):1!==e.length}function j(e,t){return function(t,{displayName:n}){const r=function(e,t){return r.dependsOnOwnProps?r.mapToProps(e,t):r.mapToProps(e,void 0)};return r.dependsOnOwnProps=!0,r.mapToProps=function(t,n){r.mapToProps=e,r.dependsOnOwnProps=_(e);let o=r(t,n);return"function"==typeof o&&(r.mapToProps=o,r.dependsOnOwnProps=_(o),o=r(t,n)),o},r}}function O(e,t){return(n,r)=>{throw new Error(`Invalid value of type ${typeof e} for ${t} argument when connecting component ${r.wrappedComponentName}.`)}}function k(e,t,n){return(0,g.Z)({},n,e,t)}const A={notify(){},get:()=>[]};function C(e,t){let n,r=A;function o(){i.onStateChange&&i.onStateChange()}function s(){n||(n=t?t.addNestedSub(o):e.subscribe(o),r=function(){const e=f();let t=null,n=null;return{clear(){t=null,n=null},notify(){e((()=>{let e=t;for(;e;)e.callback(),e=e.next}))},get(){let e=[],n=t;for(;n;)e.push(n),n=n.next;return e},subscribe(e){let r=!0,o=n={callback:e,next:null,prev:n};return o.prev?o.prev.next=o:t=o,function(){r&&null!==t&&(r=!1,o.next?o.next.prev=o.prev:n=o.prev,o.prev?o.prev.next=o.next:t=o.next)}}}}())}const i={addNestedSub:function(e){return s(),r.subscribe(e)},notifyNestedSubs:function(){r.notify()},handleChangeWrapper:o,isSubscribed:function(){return Boolean(n)},trySubscribe:s,tryUnsubscribe:function(){n&&(n(),n=void 0,r.clear(),r=A)},getListeners:()=>r};return i}const P=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement)?a.useLayoutEffect:a.useEffect;function N(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function I(e,t){if(N(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r=0;r{throw new Error("uSES not initialized!")};const M=[null,null];function D(e,t,n,r,o,s){e.current=r,n.current=!1,o.current&&(o.current=null,s())}function F(e,t){return e===t}const L=function(e,t,n,{pure:r,areStatesEqual:o=F,areOwnPropsEqual:s=I,areStatePropsEqual:i=I,areMergedPropsEqual:l=I,forwardRef:c=!1,context:u=d}={}){const p=u,h=function(e){return e?"function"==typeof e?j(e):O(e,"mapStateToProps"):S((()=>({})))}(e),f=function(e){return e&&"object"==typeof e?S((t=>function(e,t){const n={};for(const r in e){const o=e[r];"function"==typeof o&&(n[r]=(...e)=>t(o(...e)))}return n}(e,t))):e?"function"==typeof e?j(e):O(e,"mapDispatchToProps"):S((e=>({dispatch:e})))}(t),m=function(e){return e?"function"==typeof e?function(e){return function(t,{displayName:n,areMergedPropsEqual:r}){let o,s=!1;return function(t,n,i){const a=e(t,n,i);return s?r(a,o)||(o=a):(s=!0,o=a),o}}}(e):O(e,"mergeProps"):()=>k}(n),v=Boolean(e);return e=>{const t=e.displayName||e.name||"Component",n=`Connect(${t})`,r={shouldHandleStateChanges:v,displayName:n,wrappedComponentName:t,WrappedComponent:e,initMapStateToProps:h,initMapDispatchToProps:f,initMergeProps:m,areStatesEqual:o,areStatePropsEqual:i,areOwnPropsEqual:s,areMergedPropsEqual:l};function u(t){const[n,o,s]=(0,a.useMemo)((()=>{const{reactReduxForwardedRef:e}=t,n=(0,y.Z)(t,T);return[t.context,e,n]}),[t]),i=(0,a.useMemo)((()=>n&&n.Consumer&&(0,w.isContextConsumer)(a.createElement(n.Consumer,null))?n:p),[n,p]),l=(0,a.useContext)(i),c=Boolean(t.store)&&Boolean(t.store.getState)&&Boolean(t.store.dispatch),u=Boolean(l)&&Boolean(l.store);const h=c?t.store:l.store,f=u?l.getServerState:h.getState,d=(0,a.useMemo)((()=>function(e,t){let{initMapStateToProps:n,initMapDispatchToProps:r,initMergeProps:o}=t,s=(0,y.Z)(t,E);return x(n(e,s),r(e,s),o(e,s),e,s)}(h.dispatch,r)),[h]),[m,b]=(0,a.useMemo)((()=>{if(!v)return M;const e=C(h,c?void 0:l.subscription),t=e.notifyNestedSubs.bind(e);return[e,t]}),[h,c,l]),S=(0,a.useMemo)((()=>c?l:(0,g.Z)({},l,{subscription:m})),[c,l,m]),_=(0,a.useRef)(),j=(0,a.useRef)(s),O=(0,a.useRef)(),k=(0,a.useRef)(!1),A=((0,a.useRef)(!1),(0,a.useRef)(!1)),N=(0,a.useRef)();P((()=>(A.current=!0,()=>{A.current=!1})),[]);const I=(0,a.useMemo)((()=>()=>O.current&&s===j.current?O.current:d(h.getState(),s)),[h,s]),F=(0,a.useMemo)((()=>e=>m?function(e,t,n,r,o,s,i,a,l,c,u){if(!e)return()=>{};let p=!1,h=null;const f=()=>{if(p||!a.current)return;const e=t.getState();let n,f;try{n=r(e,o.current)}catch(e){f=e,h=e}f||(h=null),n===s.current?i.current||c():(s.current=n,l.current=n,i.current=!0,u())};return n.onStateChange=f,n.trySubscribe(),f(),()=>{if(p=!0,n.tryUnsubscribe(),n.onStateChange=null,h)throw h}}(v,h,m,d,j,_,k,A,O,b,e):()=>{}),[m]);var L,B,$;let q;L=D,B=[j,_,k,s,O,b],P((()=>L(...B)),$);try{q=R(F,I,f?()=>d(f(),s):I)}catch(e){throw N.current&&(e.message+=`\nThe error may be correlated with this previous error:\n${N.current.stack}\n\n`),e}P((()=>{N.current=void 0,O.current=void 0,_.current=q}));const U=(0,a.useMemo)((()=>a.createElement(e,(0,g.Z)({},q,{ref:o}))),[o,e,q]);return(0,a.useMemo)((()=>v?a.createElement(i.Provider,{value:S},U):U),[i,U,S])}const d=a.memo(u);if(d.WrappedComponent=e,d.displayName=u.displayName=n,c){const t=a.forwardRef((function(e,t){return a.createElement(d,(0,g.Z)({},e,{reactReduxForwardedRef:t}))}));return t.displayName=n,t.WrappedComponent=e,b()(t,e)}return b()(d,e)}};const B=function({store:e,context:t,children:n,serverState:r}){const o=(0,a.useMemo)((()=>{const t=C(e);return{store:e,subscription:t,getServerState:r?()=>r:void 0}}),[e,r]),s=(0,a.useMemo)((()=>e.getState()),[e]);P((()=>{const{subscription:t}=o;return t.onStateChange=t.notifyNestedSubs,t.trySubscribe(),s!==e.getState()&&t.notifyNestedSubs(),()=>{t.tryUnsubscribe(),t.onStateChange=void 0}}),[o,s]);const i=t||d;return a.createElement(i.Provider,{value:o},n)};var $,q;$=p.useSyncExternalStoreWithSelector,m=$,(e=>{R=e})(u.useSyncExternalStore),q=l.unstable_batchedUpdates,h=q;var U=n(57557),z=n.n(U),V=n(6557),W=n.n(V);const J=e=>t=>{const{fn:n}=e();class r extends a.Component{render(){return a.createElement(t,o()({},e(),this.props,this.context))}}return r.displayName=`WithSystem(${n.getDisplayName(t)})`,r},K=(e,t)=>n=>{const{fn:r}=e();class s extends a.Component{render(){return a.createElement(B,{store:t},a.createElement(n,o()({},this.props,this.context)))}}return s.displayName=`WithRoot(${r.getDisplayName(n)})`,s},H=(e,t,n)=>(0,c.qC)(n?K(e,n):W(),L(((n,r)=>{var o;const s={...r,...e()},i=(null===(o=t.prototype)||void 0===o?void 0:o.mapStateToProps)||(e=>({state:e}));return i(n,s)})),J(e))(t),G=(e,t,n,r)=>{for(const o in t){const s=t[o];"function"==typeof s&&s(n[o],r[o],e())}},Z=(e,t,n)=>(t,r)=>{const{fn:o}=e(),s=n(t,"root");class l extends a.Component{constructor(t,n){super(t,n),G(e,r,t,{})}UNSAFE_componentWillReceiveProps(t){G(e,r,t,this.props)}render(){const e=z()(this.props,r?i()(r):[]);return a.createElement(s,e)}}return l.displayName=`WithMappedContainer(${o.getDisplayName(s)})`,l},Y=(e,t,n,r)=>o=>{const s=n(e,t,r)("App","root");l.render(a.createElement(s,null),o)},X=(e,t,n)=>function(r,o){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if("string"!=typeof r)throw new TypeError("Need a string, to fetch a component. Was given a "+typeof r);const i=n(r);return i?o?"root"===o?H(e,i,t()):H(e,i):i:(s.failSilently||e().log.warn("Could not find component:",r),null)}},33424:(e,t,n)=>{"use strict";n.d(t,{d3:()=>D,C2:()=>ee});var r=n(28222),o=n.n(r),s=n(58118),i=n.n(s),a=n(63366);function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return function(e){if(0===e.length||1===e.length)return e;var t,n,r=e.join(".");return m[r]||(m[r]=0===(n=(t=e).length)||1===n?t:2===n?[t[0],t[1],"".concat(t[0],".").concat(t[1]),"".concat(t[1],".").concat(t[0])]:3===n?[t[0],t[1],t[2],"".concat(t[0],".").concat(t[1]),"".concat(t[0],".").concat(t[2]),"".concat(t[1],".").concat(t[0]),"".concat(t[1],".").concat(t[2]),"".concat(t[2],".").concat(t[0]),"".concat(t[2],".").concat(t[1]),"".concat(t[0],".").concat(t[1],".").concat(t[2]),"".concat(t[0],".").concat(t[2],".").concat(t[1]),"".concat(t[1],".").concat(t[0],".").concat(t[2]),"".concat(t[1],".").concat(t[2],".").concat(t[0]),"".concat(t[2],".").concat(t[0],".").concat(t[1]),"".concat(t[2],".").concat(t[1],".").concat(t[0])]:n>=4?[t[0],t[1],t[2],t[3],"".concat(t[0],".").concat(t[1]),"".concat(t[0],".").concat(t[2]),"".concat(t[0],".").concat(t[3]),"".concat(t[1],".").concat(t[0]),"".concat(t[1],".").concat(t[2]),"".concat(t[1],".").concat(t[3]),"".concat(t[2],".").concat(t[0]),"".concat(t[2],".").concat(t[1]),"".concat(t[2],".").concat(t[3]),"".concat(t[3],".").concat(t[0]),"".concat(t[3],".").concat(t[1]),"".concat(t[3],".").concat(t[2]),"".concat(t[0],".").concat(t[1],".").concat(t[2]),"".concat(t[0],".").concat(t[1],".").concat(t[3]),"".concat(t[0],".").concat(t[2],".").concat(t[1]),"".concat(t[0],".").concat(t[2],".").concat(t[3]),"".concat(t[0],".").concat(t[3],".").concat(t[1]),"".concat(t[0],".").concat(t[3],".").concat(t[2]),"".concat(t[1],".").concat(t[0],".").concat(t[2]),"".concat(t[1],".").concat(t[0],".").concat(t[3]),"".concat(t[1],".").concat(t[2],".").concat(t[0]),"".concat(t[1],".").concat(t[2],".").concat(t[3]),"".concat(t[1],".").concat(t[3],".").concat(t[0]),"".concat(t[1],".").concat(t[3],".").concat(t[2]),"".concat(t[2],".").concat(t[0],".").concat(t[1]),"".concat(t[2],".").concat(t[0],".").concat(t[3]),"".concat(t[2],".").concat(t[1],".").concat(t[0]),"".concat(t[2],".").concat(t[1],".").concat(t[3]),"".concat(t[2],".").concat(t[3],".").concat(t[0]),"".concat(t[2],".").concat(t[3],".").concat(t[1]),"".concat(t[3],".").concat(t[0],".").concat(t[1]),"".concat(t[3],".").concat(t[0],".").concat(t[2]),"".concat(t[3],".").concat(t[1],".").concat(t[0]),"".concat(t[3],".").concat(t[1],".").concat(t[2]),"".concat(t[3],".").concat(t[2],".").concat(t[0]),"".concat(t[3],".").concat(t[2],".").concat(t[1]),"".concat(t[0],".").concat(t[1],".").concat(t[2],".").concat(t[3]),"".concat(t[0],".").concat(t[1],".").concat(t[3],".").concat(t[2]),"".concat(t[0],".").concat(t[2],".").concat(t[1],".").concat(t[3]),"".concat(t[0],".").concat(t[2],".").concat(t[3],".").concat(t[1]),"".concat(t[0],".").concat(t[3],".").concat(t[1],".").concat(t[2]),"".concat(t[0],".").concat(t[3],".").concat(t[2],".").concat(t[1]),"".concat(t[1],".").concat(t[0],".").concat(t[2],".").concat(t[3]),"".concat(t[1],".").concat(t[0],".").concat(t[3],".").concat(t[2]),"".concat(t[1],".").concat(t[2],".").concat(t[0],".").concat(t[3]),"".concat(t[1],".").concat(t[2],".").concat(t[3],".").concat(t[0]),"".concat(t[1],".").concat(t[3],".").concat(t[0],".").concat(t[2]),"".concat(t[1],".").concat(t[3],".").concat(t[2],".").concat(t[0]),"".concat(t[2],".").concat(t[0],".").concat(t[1],".").concat(t[3]),"".concat(t[2],".").concat(t[0],".").concat(t[3],".").concat(t[1]),"".concat(t[2],".").concat(t[1],".").concat(t[0],".").concat(t[3]),"".concat(t[2],".").concat(t[1],".").concat(t[3],".").concat(t[0]),"".concat(t[2],".").concat(t[3],".").concat(t[0],".").concat(t[1]),"".concat(t[2],".").concat(t[3],".").concat(t[1],".").concat(t[0]),"".concat(t[3],".").concat(t[0],".").concat(t[1],".").concat(t[2]),"".concat(t[3],".").concat(t[0],".").concat(t[2],".").concat(t[1]),"".concat(t[3],".").concat(t[1],".").concat(t[0],".").concat(t[2]),"".concat(t[3],".").concat(t[1],".").concat(t[2],".").concat(t[0]),"".concat(t[3],".").concat(t[2],".").concat(t[0],".").concat(t[1]),"".concat(t[3],".").concat(t[2],".").concat(t[1],".").concat(t[0])]:void 0),m[r]}(e.filter((function(e){return"token"!==e}))).reduce((function(e,t){return d(d({},e),n[t])}),t)}function y(e){return e.join(" ")}function v(e){var t=e.node,n=e.stylesheet,r=e.style,o=void 0===r?{}:r,s=e.useInlineStyles,i=e.key,a=t.properties,l=t.type,c=t.tagName,u=t.value;if("text"===l)return u;if(c){var f,m=function(e,t){var n=0;return function(r){return n+=1,r.map((function(r,o){return v({node:r,stylesheet:e,useInlineStyles:t,key:"code-segment-".concat(n,"-").concat(o)})}))}}(n,s);if(s){var b=Object.keys(n).reduce((function(e,t){return t.split(".").forEach((function(t){e.includes(t)||e.push(t)})),e}),[]),w=a.className&&a.className.includes("token")?["token"]:[],E=a.className&&w.concat(a.className.filter((function(e){return!b.includes(e)})));f=d(d({},a),{},{className:y(E)||void 0,style:g(a.className,Object.assign({},a.style,o),n)})}else f=d(d({},a),{},{className:y(a.className)});var x=m(t.children);return p.createElement(c,(0,h.Z)({key:i},f),x)}}const b=function(e,t){return-1!==e.listLanguages().indexOf(t)};var w=["language","children","style","customStyle","codeTagProps","useInlineStyles","showLineNumbers","showInlineLineNumbers","startingLineNumber","lineNumberContainerStyle","lineNumberStyle","wrapLines","wrapLongLines","lineProps","renderer","PreTag","CodeTag","code","astGenerator"];function E(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function x(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=0;r2&&void 0!==arguments[2]?arguments[2]:[];return t||c.length>0?function(e,t){return k({children:e,lineNumber:t,lineNumberStyle:a,largestLineNumber:i,showInlineLineNumbers:o,lineProps:n,className:arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],showLineNumbers:r,wrapLongLines:l})}(e,s,c):function(e,t){if(r&&t&&o){var n=O(a,t,i);e.unshift(j(t,n))}return e}(e,s)}for(var m=function(){var e=u[f],t=e.children[0].value;if(t.match(S)){var n=t.split("\n");n.forEach((function(t,o){var i=r&&p.length+s,a={type:"text",value:"".concat(t,"\n")};if(0===o){var l=d(u.slice(h+1,f).concat(k({children:[a],className:e.properties.className})),i);p.push(l)}else if(o===n.length-1){var c=u[f+1]&&u[f+1].children&&u[f+1].children[0],m={type:"text",value:"".concat(t)};if(c){var g=k({children:[m],className:e.properties.className});u.splice(f+1,0,g)}else{var y=d([m],i,e.properties.className);p.push(y)}}else{var v=d([a],i,e.properties.className);p.push(v)}})),h=f}f++};f=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,w);z=z||I;var W=d?p.createElement(_,{containerStyle:E,codeStyle:c.style||{},numberStyle:j,startingLineNumber:v,codeString:U}):null,J=o.hljs||o['pre[class*="language-"]']||{backgroundColor:"#fff"},K=N(z)?"hljs":"prismjs",H=h?Object.assign({},V,{style:Object.assign({},J,i)}):Object.assign({},V,{className:V.className?"".concat(K," ").concat(V.className):K,style:Object.assign({},i)});if(c.style=x(x({},c.style),{},A?{whiteSpace:"pre-wrap"}:{whiteSpace:"pre"}),!z)return p.createElement(L,H,W,p.createElement($,c,U));(void 0===O&&D||A)&&(O=!0),D=D||P;var G=[{type:"text",value:U}],Z=function(e){var t=e.astGenerator,n=e.language,r=e.code,o=e.defaultCodeValue;if(N(t)){var s=b(t,n);return"text"===n?{value:o,language:"text"}:s?t.highlight(n,r):t.highlightAuto(r)}try{return n&&"text"!==n?{value:t.highlight(r,n)}:{value:o}}catch(e){return{value:o}}}({astGenerator:z,language:t,code:U,defaultCodeValue:G});null===Z.language&&(Z.value=G);var Y=C(Z,O,M,d,g,v,Z.value.length+v,j,A);return p.createElement(L,H,p.createElement($,c,!g&&W,D({rows:Y,stylesheet:o,useInlineStyles:h})))});M.registerLanguage=R.registerLanguage;const D=M;var F=n(96344);const L=n.n(F)();var B=n(82026);const $=n.n(B)();var q=n(42157);const U=n.n(q)();var z=n(61519);const V=n.n(z)();var W=n(54587);const J=n.n(W)();var K=n(30786);const H=n.n(K)();var G=n(66336);const Z=n.n(G)(),Y={hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#333",color:"white"},"hljs-name":{fontWeight:"bold"},"hljs-strong":{fontWeight:"bold"},"hljs-code":{fontStyle:"italic",color:"#888"},"hljs-emphasis":{fontStyle:"italic"},"hljs-tag":{color:"#62c8f3"},"hljs-variable":{color:"#ade5fc"},"hljs-template-variable":{color:"#ade5fc"},"hljs-selector-id":{color:"#ade5fc"},"hljs-selector-class":{color:"#ade5fc"},"hljs-string":{color:"#a2fca2"},"hljs-bullet":{color:"#d36363"},"hljs-type":{color:"#ffa"},"hljs-title":{color:"#ffa"},"hljs-section":{color:"#ffa"},"hljs-attribute":{color:"#ffa"},"hljs-quote":{color:"#ffa"},"hljs-built_in":{color:"#ffa"},"hljs-builtin-name":{color:"#ffa"},"hljs-number":{color:"#d36363"},"hljs-symbol":{color:"#d36363"},"hljs-keyword":{color:"#fcc28c"},"hljs-selector-tag":{color:"#fcc28c"},"hljs-literal":{color:"#fcc28c"},"hljs-comment":{color:"#888"},"hljs-deletion":{color:"#333",backgroundColor:"#fc9b9b"},"hljs-regexp":{color:"#c6b4f0"},"hljs-link":{color:"#c6b4f0"},"hljs-meta":{color:"#fc9b9b"},"hljs-addition":{backgroundColor:"#a2fca2",color:"#333"}};D.registerLanguage("json",$),D.registerLanguage("js",L),D.registerLanguage("xml",U),D.registerLanguage("yaml",J),D.registerLanguage("http",H),D.registerLanguage("bash",V),D.registerLanguage("powershell",Z),D.registerLanguage("javascript",L);const X={agate:Y,arta:{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#222",color:"#aaa"},"hljs-subst":{color:"#aaa"},"hljs-section":{color:"#fff",fontWeight:"bold"},"hljs-comment":{color:"#444"},"hljs-quote":{color:"#444"},"hljs-meta":{color:"#444"},"hljs-string":{color:"#ffcc33"},"hljs-symbol":{color:"#ffcc33"},"hljs-bullet":{color:"#ffcc33"},"hljs-regexp":{color:"#ffcc33"},"hljs-number":{color:"#00cc66"},"hljs-addition":{color:"#00cc66"},"hljs-built_in":{color:"#32aaee"},"hljs-builtin-name":{color:"#32aaee"},"hljs-literal":{color:"#32aaee"},"hljs-type":{color:"#32aaee"},"hljs-template-variable":{color:"#32aaee"},"hljs-attribute":{color:"#32aaee"},"hljs-link":{color:"#32aaee"},"hljs-keyword":{color:"#6644aa"},"hljs-selector-tag":{color:"#6644aa"},"hljs-name":{color:"#6644aa"},"hljs-selector-id":{color:"#6644aa"},"hljs-selector-class":{color:"#6644aa"},"hljs-title":{color:"#bb1166"},"hljs-variable":{color:"#bb1166"},"hljs-deletion":{color:"#bb1166"},"hljs-template-tag":{color:"#bb1166"},"hljs-doctag":{fontWeight:"bold"},"hljs-strong":{fontWeight:"bold"},"hljs-emphasis":{fontStyle:"italic"}},monokai:{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#272822",color:"#ddd"},"hljs-tag":{color:"#f92672"},"hljs-keyword":{color:"#f92672",fontWeight:"bold"},"hljs-selector-tag":{color:"#f92672",fontWeight:"bold"},"hljs-literal":{color:"#f92672",fontWeight:"bold"},"hljs-strong":{color:"#f92672"},"hljs-name":{color:"#f92672"},"hljs-code":{color:"#66d9ef"},"hljs-class .hljs-title":{color:"white"},"hljs-attribute":{color:"#bf79db"},"hljs-symbol":{color:"#bf79db"},"hljs-regexp":{color:"#bf79db"},"hljs-link":{color:"#bf79db"},"hljs-string":{color:"#a6e22e"},"hljs-bullet":{color:"#a6e22e"},"hljs-subst":{color:"#a6e22e"},"hljs-title":{color:"#a6e22e",fontWeight:"bold"},"hljs-section":{color:"#a6e22e",fontWeight:"bold"},"hljs-emphasis":{color:"#a6e22e"},"hljs-type":{color:"#a6e22e",fontWeight:"bold"},"hljs-built_in":{color:"#a6e22e"},"hljs-builtin-name":{color:"#a6e22e"},"hljs-selector-attr":{color:"#a6e22e"},"hljs-selector-pseudo":{color:"#a6e22e"},"hljs-addition":{color:"#a6e22e"},"hljs-variable":{color:"#a6e22e"},"hljs-template-tag":{color:"#a6e22e"},"hljs-template-variable":{color:"#a6e22e"},"hljs-comment":{color:"#75715e"},"hljs-quote":{color:"#75715e"},"hljs-deletion":{color:"#75715e"},"hljs-meta":{color:"#75715e"},"hljs-doctag":{fontWeight:"bold"},"hljs-selector-id":{fontWeight:"bold"}},nord:{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#2E3440",color:"#D8DEE9"},"hljs-subst":{color:"#D8DEE9"},"hljs-selector-tag":{color:"#81A1C1"},"hljs-selector-id":{color:"#8FBCBB",fontWeight:"bold"},"hljs-selector-class":{color:"#8FBCBB"},"hljs-selector-attr":{color:"#8FBCBB"},"hljs-selector-pseudo":{color:"#88C0D0"},"hljs-addition":{backgroundColor:"rgba(163, 190, 140, 0.5)"},"hljs-deletion":{backgroundColor:"rgba(191, 97, 106, 0.5)"},"hljs-built_in":{color:"#8FBCBB"},"hljs-type":{color:"#8FBCBB"},"hljs-class":{color:"#8FBCBB"},"hljs-function":{color:"#88C0D0"},"hljs-function > .hljs-title":{color:"#88C0D0"},"hljs-keyword":{color:"#81A1C1"},"hljs-literal":{color:"#81A1C1"},"hljs-symbol":{color:"#81A1C1"},"hljs-number":{color:"#B48EAD"},"hljs-regexp":{color:"#EBCB8B"},"hljs-string":{color:"#A3BE8C"},"hljs-title":{color:"#8FBCBB"},"hljs-params":{color:"#D8DEE9"},"hljs-bullet":{color:"#81A1C1"},"hljs-code":{color:"#8FBCBB"},"hljs-emphasis":{fontStyle:"italic"},"hljs-formula":{color:"#8FBCBB"},"hljs-strong":{fontWeight:"bold"},"hljs-link:hover":{textDecoration:"underline"},"hljs-quote":{color:"#4C566A"},"hljs-comment":{color:"#4C566A"},"hljs-doctag":{color:"#8FBCBB"},"hljs-meta":{color:"#5E81AC"},"hljs-meta-keyword":{color:"#5E81AC"},"hljs-meta-string":{color:"#A3BE8C"},"hljs-attr":{color:"#8FBCBB"},"hljs-attribute":{color:"#D8DEE9"},"hljs-builtin-name":{color:"#81A1C1"},"hljs-name":{color:"#81A1C1"},"hljs-section":{color:"#88C0D0"},"hljs-tag":{color:"#81A1C1"},"hljs-variable":{color:"#D8DEE9"},"hljs-template-variable":{color:"#D8DEE9"},"hljs-template-tag":{color:"#5E81AC"},"abnf .hljs-attribute":{color:"#88C0D0"},"abnf .hljs-symbol":{color:"#EBCB8B"},"apache .hljs-attribute":{color:"#88C0D0"},"apache .hljs-section":{color:"#81A1C1"},"arduino .hljs-built_in":{color:"#88C0D0"},"aspectj .hljs-meta":{color:"#D08770"},"aspectj > .hljs-title":{color:"#88C0D0"},"bnf .hljs-attribute":{color:"#8FBCBB"},"clojure .hljs-name":{color:"#88C0D0"},"clojure .hljs-symbol":{color:"#EBCB8B"},"coq .hljs-built_in":{color:"#88C0D0"},"cpp .hljs-meta-string":{color:"#8FBCBB"},"css .hljs-built_in":{color:"#88C0D0"},"css .hljs-keyword":{color:"#D08770"},"diff .hljs-meta":{color:"#8FBCBB"},"ebnf .hljs-attribute":{color:"#8FBCBB"},"glsl .hljs-built_in":{color:"#88C0D0"},"groovy .hljs-meta:not(:first-child)":{color:"#D08770"},"haxe .hljs-meta":{color:"#D08770"},"java .hljs-meta":{color:"#D08770"},"ldif .hljs-attribute":{color:"#8FBCBB"},"lisp .hljs-name":{color:"#88C0D0"},"lua .hljs-built_in":{color:"#88C0D0"},"moonscript .hljs-built_in":{color:"#88C0D0"},"nginx .hljs-attribute":{color:"#88C0D0"},"nginx .hljs-section":{color:"#5E81AC"},"pf .hljs-built_in":{color:"#88C0D0"},"processing .hljs-built_in":{color:"#88C0D0"},"scss .hljs-keyword":{color:"#81A1C1"},"stylus .hljs-keyword":{color:"#81A1C1"},"swift .hljs-meta":{color:"#D08770"},"vim .hljs-built_in":{color:"#88C0D0",fontStyle:"italic"},"yaml .hljs-meta":{color:"#D08770"}},obsidian:{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#282b2e",color:"#e0e2e4"},"hljs-keyword":{color:"#93c763",fontWeight:"bold"},"hljs-selector-tag":{color:"#93c763",fontWeight:"bold"},"hljs-literal":{color:"#93c763",fontWeight:"bold"},"hljs-selector-id":{color:"#93c763"},"hljs-number":{color:"#ffcd22"},"hljs-attribute":{color:"#668bb0"},"hljs-code":{color:"white"},"hljs-class .hljs-title":{color:"white"},"hljs-section":{color:"white",fontWeight:"bold"},"hljs-regexp":{color:"#d39745"},"hljs-link":{color:"#d39745"},"hljs-meta":{color:"#557182"},"hljs-tag":{color:"#8cbbad"},"hljs-name":{color:"#8cbbad",fontWeight:"bold"},"hljs-bullet":{color:"#8cbbad"},"hljs-subst":{color:"#8cbbad"},"hljs-emphasis":{color:"#8cbbad"},"hljs-type":{color:"#8cbbad",fontWeight:"bold"},"hljs-built_in":{color:"#8cbbad"},"hljs-selector-attr":{color:"#8cbbad"},"hljs-selector-pseudo":{color:"#8cbbad"},"hljs-addition":{color:"#8cbbad"},"hljs-variable":{color:"#8cbbad"},"hljs-template-tag":{color:"#8cbbad"},"hljs-template-variable":{color:"#8cbbad"},"hljs-string":{color:"#ec7600"},"hljs-symbol":{color:"#ec7600"},"hljs-comment":{color:"#818e96"},"hljs-quote":{color:"#818e96"},"hljs-deletion":{color:"#818e96"},"hljs-selector-class":{color:"#A082BD"},"hljs-doctag":{fontWeight:"bold"},"hljs-title":{fontWeight:"bold"},"hljs-strong":{fontWeight:"bold"}},"tomorrow-night":{"hljs-comment":{color:"#969896"},"hljs-quote":{color:"#969896"},"hljs-variable":{color:"#cc6666"},"hljs-template-variable":{color:"#cc6666"},"hljs-tag":{color:"#cc6666"},"hljs-name":{color:"#cc6666"},"hljs-selector-id":{color:"#cc6666"},"hljs-selector-class":{color:"#cc6666"},"hljs-regexp":{color:"#cc6666"},"hljs-deletion":{color:"#cc6666"},"hljs-number":{color:"#de935f"},"hljs-built_in":{color:"#de935f"},"hljs-builtin-name":{color:"#de935f"},"hljs-literal":{color:"#de935f"},"hljs-type":{color:"#de935f"},"hljs-params":{color:"#de935f"},"hljs-meta":{color:"#de935f"},"hljs-link":{color:"#de935f"},"hljs-attribute":{color:"#f0c674"},"hljs-string":{color:"#b5bd68"},"hljs-symbol":{color:"#b5bd68"},"hljs-bullet":{color:"#b5bd68"},"hljs-addition":{color:"#b5bd68"},"hljs-title":{color:"#81a2be"},"hljs-section":{color:"#81a2be"},"hljs-keyword":{color:"#b294bb"},"hljs-selector-tag":{color:"#b294bb"},hljs:{display:"block",overflowX:"auto",background:"#1d1f21",color:"#c5c8c6",padding:"0.5em"},"hljs-emphasis":{fontStyle:"italic"},"hljs-strong":{fontWeight:"bold"}}},Q=o()(X),ee=e=>i()(Q).call(Q,e)?X[e]:(console.warn(`Request style '${e}' is not available, returning default instead`),Y)},90242:(e,t,n)=>{"use strict";n.d(t,{AF:()=>ae,Ay:()=>fe,D$:()=>De,DR:()=>ve,GZ:()=>je,HP:()=>he,Ik:()=>Ee,J6:()=>Ne,Kn:()=>ce,LQ:()=>le,Nm:()=>ke,O2:()=>Ue,Pz:()=>Me,Q2:()=>de,QG:()=>Ce,UG:()=>xe,Uj:()=>Be,V9:()=>Fe,Wl:()=>ue,XV:()=>Re,Xb:()=>$e,Zl:()=>be,_5:()=>me,be:()=>Oe,cz:()=>Le,gp:()=>ye,hW:()=>Ae,iQ:()=>ge,kJ:()=>pe,mz:()=>se,nX:()=>Ie,oG:()=>ie,oJ:()=>Pe,po:()=>Te,r3:()=>Se,wh:()=>_e});var r=n(58309),o=n.n(r),s=n(97606),i=n.n(s),a=n(74386),l=n.n(a),c=n(86),u=n.n(c),p=n(14418),h=n.n(p),f=n(28222),d=n.n(f),m=(n(11189),n(24282)),g=n.n(m),y=n(76986),v=n.n(y),b=n(2578),w=n.n(b),E=(n(24278),n(39022),n(92039)),x=n.n(E),S=(n(58118),n(11882)),_=n.n(S),j=n(51679),O=n.n(j),k=n(27043),A=n.n(k),C=n(81607),P=n.n(C),N=n(35627),I=n.n(N),T=n(43393),R=n.n(T),M=n(17967),D=n(68929),F=n.n(D),L=n(11700),B=n.n(L),$=n(88306),q=n.n($),U=n(13311),z=n.n(U),V=(n(59704),n(77813)),W=n.n(V),J=n(23560),K=n.n(J),H=n(27504),G=n(8269),Z=n.n(G),Y=n(19069),X=n(92282),Q=n.n(X),ee=n(89072),te=n.n(ee),ne=n(48764).Buffer;const re="default",oe=e=>R().Iterable.isIterable(e);function se(e){return ce(e)?oe(e)?e.toJS():e:{}}function ie(e){var t,n;if(oe(e))return e;if(e instanceof H.Z.File)return e;if(!ce(e))return e;if(o()(e))return i()(n=R().Seq(e)).call(n,ie).toList();if(K()(l()(e))){var r;const t=function(e){if(!K()(l()(e)))return e;const t={},n="_**[]",r={};for(let o of l()(e).call(e))if(t[o[0]]||r[o[0]]&&r[o[0]].containsMultiple){if(!r[o[0]]){r[o[0]]={containsMultiple:!0,length:1},t[`${o[0]}${n}${r[o[0]].length}`]=t[o[0]],delete t[o[0]]}r[o[0]].length+=1,t[`${o[0]}${n}${r[o[0]].length}`]=o[1]}else t[o[0]]=o[1];return t}(e);return i()(r=R().OrderedMap(t)).call(r,ie)}return i()(t=R().OrderedMap(e)).call(t,ie)}function ae(e){return o()(e)?e:[e]}function le(e){return"function"==typeof e}function ce(e){return!!e&&"object"==typeof e}function ue(e){return"function"==typeof e}function pe(e){return o()(e)}const he=q();function fe(e,t){var n;return g()(n=d()(e)).call(n,((n,r)=>(n[r]=t(e[r],r),n)),{})}function de(e,t){var n;return g()(n=d()(e)).call(n,((n,r)=>{let o=t(e[r],r);return o&&"object"==typeof o&&v()(n,o),n}),{})}function me(e){return t=>{let{dispatch:n,getState:r}=t;return t=>n=>"function"==typeof n?n(e()):t(n)}}function ge(e){var t;let n=e.keySeq();return n.contains(re)?re:w()(t=h()(n).call(n,(e=>"2"===(e+"")[0]))).call(t).first()}function ye(e,t){if(!R().Iterable.isIterable(e))return R().List();let n=e.getIn(o()(t)?t:[t]);return R().List.isList(n)?n:R().List()}function ve(e){let t,n=[/filename\*=[^']+'\w*'"([^"]+)";?/i,/filename\*=[^']+'\w*'([^;]+);?/i,/filename="([^;]*);?"/i,/filename=([^;]*);?/i];if(x()(n).call(n,(n=>(t=n.exec(e),null!==t))),null!==t&&t.length>1)try{return decodeURIComponent(t[1])}catch(e){console.error(e)}return null}function be(e){return t=e.replace(/\.[^./]*$/,""),B()(F()(t));var t}function we(e,t,n,r,s){if(!t)return[];let a=[],l=t.get("nullable"),c=t.get("required"),p=t.get("maximum"),f=t.get("minimum"),d=t.get("type"),m=t.get("format"),g=t.get("maxLength"),y=t.get("minLength"),v=t.get("uniqueItems"),b=t.get("maxItems"),w=t.get("minItems"),E=t.get("pattern");const S=n||!0===c,_=null!=e;if(l&&null===e||!d||!(S||_&&"array"===d||!(!S&&!_)))return[];let j="string"===d&&e,O="array"===d&&o()(e)&&e.length,k="array"===d&&R().List.isList(e)&&e.count();const A=[j,O,k,"array"===d&&"string"==typeof e&&e,"file"===d&&e instanceof H.Z.File,"boolean"===d&&(e||!1===e),"number"===d&&(e||0===e),"integer"===d&&(e||0===e),"object"===d&&"object"==typeof e&&null!==e,"object"===d&&"string"==typeof e&&e],C=x()(A).call(A,(e=>!!e));if(S&&!C&&!r)return a.push("Required field is not provided"),a;if("object"===d&&(null===s||"application/json"===s)){let n=e;if("string"==typeof e)try{n=JSON.parse(e)}catch(e){return a.push("Parameter string value must be valid JSON"),a}var P;if(t&&t.has("required")&&ue(c.isList)&&c.isList()&&u()(c).call(c,(e=>{void 0===n[e]&&a.push({propKey:e,error:"Required property not found"})})),t&&t.has("properties"))u()(P=t.get("properties")).call(P,((e,t)=>{const o=we(n[t],e,!1,r,s);a.push(...i()(o).call(o,(e=>({propKey:t,error:e}))))}))}if(E){let t=((e,t)=>{if(!new RegExp(t).test(e))return"Value must follow pattern "+t})(e,E);t&&a.push(t)}if(w&&"array"===d){let t=((e,t)=>{if(!e&&t>=1||e&&e.length{if(e&&e.length>t)return`Array must not contain more then ${t} item${1===t?"":"s"}`})(e,b);t&&a.push({needRemove:!0,error:t})}if(v&&"array"===d){let t=((e,t)=>{if(e&&("true"===t||!0===t)){const t=(0,T.fromJS)(e),n=t.toSet();if(e.length>n.size){let e=(0,T.Set)();if(u()(t).call(t,((n,r)=>{h()(t).call(t,(e=>ue(e.equals)?e.equals(n):e===n)).size>1&&(e=e.add(r))})),0!==e.size)return i()(e).call(e,(e=>({index:e,error:"No duplicates allowed."}))).toArray()}}})(e,v);t&&a.push(...t)}if(g||0===g){let t=((e,t)=>{if(e.length>t)return`Value must be no longer than ${t} character${1!==t?"s":""}`})(e,g);t&&a.push(t)}if(y){let t=((e,t)=>{if(e.length{if(e>t)return`Value must be less than ${t}`})(e,p);t&&a.push(t)}if(f||0===f){let t=((e,t)=>{if(e{if(isNaN(Date.parse(e)))return"Value must be a DateTime"})(e):"uuid"===m?(e=>{if(e=e.toString().toLowerCase(),!/^[{(]?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[)}]?$/.test(e))return"Value must be a Guid"})(e):(e=>{if(e&&"string"!=typeof e)return"Value must be a string"})(e),!t)return a;a.push(t)}else if("boolean"===d){let t=(e=>{if("true"!==e&&"false"!==e&&!0!==e&&!1!==e)return"Value must be a boolean"})(e);if(!t)return a;a.push(t)}else if("number"===d){let t=(e=>{if(!/^-?\d+(\.?\d+)?$/.test(e))return"Value must be a number"})(e);if(!t)return a;a.push(t)}else if("integer"===d){let t=(e=>{if(!/^-?\d+$/.test(e))return"Value must be an integer"})(e);if(!t)return a;a.push(t)}else if("array"===d){if(!O&&!k)return a;e&&u()(e).call(e,((e,n)=>{const o=we(e,t.get("items"),!1,r,s);a.push(...i()(o).call(o,(e=>({index:n,error:e}))))}))}else if("file"===d){let t=(e=>{if(e&&!(e instanceof H.Z.File))return"Value must be a file"})(e);if(!t)return a;a.push(t)}return a}const Ee=function(e,t){let{isOAS3:n=!1,bypassRequiredCheck:r=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=e.get("required"),{schema:s,parameterContentMediaType:i}=(0,Y.Z)(e,{isOAS3:n});return we(t,s,o,r,i)},xe=()=>{let e={},t=H.Z.location.search;if(!t)return{};if(""!=t){let n=t.substr(1).split("&");for(let t in n)Object.prototype.hasOwnProperty.call(n,t)&&(t=n[t].split("="),e[decodeURIComponent(t[0])]=t[1]&&decodeURIComponent(t[1])||"")}return e},Se=e=>{let t;return t=e instanceof ne?e:ne.from(e.toString(),"utf-8"),t.toString("base64")},_e={operationsSorter:{alpha:(e,t)=>e.get("path").localeCompare(t.get("path")),method:(e,t)=>e.get("method").localeCompare(t.get("method"))},tagsSorter:{alpha:(e,t)=>e.localeCompare(t)}},je=e=>{let t=[];for(let n in e){let r=e[n];void 0!==r&&""!==r&&t.push([n,"=",encodeURIComponent(r).replace(/%20/g,"+")].join(""))}return t.join("&")},Oe=(e,t,n)=>!!z()(n,(n=>W()(e[n],t[n])));function ke(e){return"string"!=typeof e||""===e?"":(0,M.N)(e)}function Ae(e){return!(!e||_()(e).call(e,"localhost")>=0||_()(e).call(e,"127.0.0.1")>=0||"none"===e)}function Ce(e){if(!R().OrderedMap.isOrderedMap(e))return null;if(!e.size)return null;const t=O()(e).call(e,((e,t)=>A()(t).call(t,"2")&&d()(e.get("content")||{}).length>0)),n=e.get("default")||R().OrderedMap(),r=(n.get("content")||R().OrderedMap()).keySeq().toJS().length?n:null;return t||r}const Pe=e=>"string"==typeof e||e instanceof String?P()(e).call(e).replace(/\s/g,"%20"):"",Ne=e=>Z()(Pe(e).replace(/%20/g,"_")),Ie=e=>h()(e).call(e,((e,t)=>/^x-/.test(t))),Te=e=>h()(e).call(e,((e,t)=>/^pattern|maxLength|minLength|maximum|minimum/.test(t)));function Re(e,t){var n;let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:()=>!0;if("object"!=typeof e||o()(e)||null===e||!t)return e;const s=v()({},e);return u()(n=d()(s)).call(n,(e=>{e===t&&r(s[e],e)?delete s[e]:s[e]=Re(s[e],t,r)})),s}function Me(e){if("string"==typeof e)return e;if(e&&e.toJS&&(e=e.toJS()),"object"==typeof e&&null!==e)try{return I()(e,null,2)}catch(t){return String(e)}return null==e?"":e.toString()}function De(e){return"number"==typeof e?e.toString():e}function Fe(e){let{returnAll:t=!1,allowHashes:n=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!R().Map.isMap(e))throw new Error("paramToIdentifier: received a non-Im.Map parameter as input");const r=e.get("name"),o=e.get("in");let s=[];return e&&e.hashCode&&o&&r&&n&&s.push(`${o}.${r}.hash-${e.hashCode()}`),o&&r&&s.push(`${o}.${r}`),s.push(r),t?s:s[0]||""}function Le(e,t){var n;const r=Fe(e,{returnAll:!0});return h()(n=i()(r).call(r,(e=>t[e]))).call(n,(e=>void 0!==e))[0]}function Be(){return qe(Q()(32).toString("base64"))}function $e(e){return qe(te()("sha256").update(e).digest("base64"))}function qe(e){return e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}const Ue=e=>!e||!(!oe(e)||!e.isEmpty())},2518:(e,t,n)=>{"use strict";function r(e){return function(e){try{return!!JSON.parse(e)}catch(e){return null}}(e)?"json":null}n.d(t,{O:()=>r})},63543:(e,t,n)=>{"use strict";n.d(t,{mn:()=>a});var r=n(63460),o=n.n(r);function s(e){return e.match(/^(?:[a-z]+:)?\/\//i)}function i(e,t){return e?s(e)?function(e){return e.match(/^\/\//i)?`${window.location.protocol}${e}`:e}(e):new(o())(e,t).href:t}function a(e,t){let{selectedServer:n=""}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};try{return function(e,t){let{selectedServer:n=""}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!e)return;if(s(e))return e;const r=i(n,t);return s(r)?new(o())(e,r).href:new(o())(e,window.location.href).href}(e,t,{selectedServer:n})}catch{return}}},27504:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=function(){var e={location:{},history:{},open:()=>{},close:()=>{},File:function(){}};if("undefined"==typeof window)return e;try{e=window;for(var t of["File","Blob","FormData"])t in window&&(e[t]=window[t])}catch(e){console.error(e)}return e}()},19069:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(14418),o=n.n(r),s=n(58118),i=n.n(s),a=n(43393),l=n.n(a);const c=l().Set.of("type","format","items","default","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","maxItems","minItems","uniqueItems","enum","multipleOf");function u(e){let{isOAS3:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!l().Map.isMap(e))return{schema:l().Map(),parameterContentMediaType:null};if(!t)return"body"===e.get("in")?{schema:e.get("schema",l().Map()),parameterContentMediaType:null}:{schema:o()(e).call(e,((e,t)=>i()(c).call(c,t))),parameterContentMediaType:null};if(e.get("content")){const t=e.get("content",l().Map({})).keySeq().first();return{schema:e.getIn(["content",t,"schema"],l().Map()),parameterContentMediaType:t}}return{schema:e.get("schema")?e.get("schema",l().Map()):l().Map(),parameterContentMediaType:null}}},60314:(e,t,n)=>{"use strict";n.d(t,{Z:()=>x});var r=n(58309),o=n.n(r),s=n(2250),i=n.n(s),a=n(25110),l=n.n(a),c=n(8712),u=n.n(c),p=n(51679),h=n.n(p),f=n(12373),d=n.n(f),m=n(18492),g=n.n(m),y=n(88306),v=n.n(y);const b=e=>t=>o()(e)&&o()(t)&&e.length===t.length&&i()(e).call(e,((e,n)=>e===t[n])),w=function(){for(var e=arguments.length,t=new Array(e),n=0;n1&&void 0!==arguments[1]?arguments[1]:w;const{Cache:n}=v();v().Cache=E;const r=v()(e,t);return v().Cache=n,r}},79742:(e,t)=>{"use strict";t.byteLength=function(e){var t=a(e),n=t[0],r=t[1];return 3*(n+r)/4-r},t.toByteArray=function(e){var t,n,s=a(e),i=s[0],l=s[1],c=new o(function(e,t,n){return 3*(t+n)/4-n}(0,i,l)),u=0,p=l>0?i-4:i;for(n=0;n>16&255,c[u++]=t>>8&255,c[u++]=255&t;2===l&&(t=r[e.charCodeAt(n)]<<2|r[e.charCodeAt(n+1)]>>4,c[u++]=255&t);1===l&&(t=r[e.charCodeAt(n)]<<10|r[e.charCodeAt(n+1)]<<4|r[e.charCodeAt(n+2)]>>2,c[u++]=t>>8&255,c[u++]=255&t);return c},t.fromByteArray=function(e){for(var t,r=e.length,o=r%3,s=[],i=16383,a=0,c=r-o;ac?c:a+i));1===o?(t=e[r-1],s.push(n[t>>2]+n[t<<4&63]+"==")):2===o&&(t=(e[r-2]<<8)+e[r-1],s.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"="));return s.join("")};for(var n=[],r=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0;i<64;++i)n[i]=s[i],r[s.charCodeAt(i)]=i;function a(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function l(e,t,r){for(var o,s,i=[],a=t;a>18&63]+n[s>>12&63]+n[s>>6&63]+n[63&s]);return i.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},48764:(e,t,n)=>{"use strict";const r=n(79742),o=n(80645),s="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=l,t.SlowBuffer=function(e){+e!=e&&(e=0);return l.alloc(+e)},t.INSPECT_MAX_BYTES=50;const i=2147483647;function a(e){if(e>i)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,l.prototype),t}function l(e,t,n){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return p(e)}return c(e,t,n)}function c(e,t,n){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!l.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const n=0|m(e,t);let r=a(n);const o=r.write(e,t);o!==n&&(r=r.slice(0,o));return r}(e,t);if(ArrayBuffer.isView(e))return function(e){if(G(e,Uint8Array)){const t=new Uint8Array(e);return f(t.buffer,t.byteOffset,t.byteLength)}return h(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(G(e,ArrayBuffer)||e&&G(e.buffer,ArrayBuffer))return f(e,t,n);if("undefined"!=typeof SharedArrayBuffer&&(G(e,SharedArrayBuffer)||e&&G(e.buffer,SharedArrayBuffer)))return f(e,t,n);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const r=e.valueOf&&e.valueOf();if(null!=r&&r!==e)return l.from(r,t,n);const o=function(e){if(l.isBuffer(e)){const t=0|d(e.length),n=a(t);return 0===n.length||e.copy(n,0,0,t),n}if(void 0!==e.length)return"number"!=typeof e.length||Z(e.length)?a(0):h(e);if("Buffer"===e.type&&Array.isArray(e.data))return h(e.data)}(e);if(o)return o;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return l.from(e[Symbol.toPrimitive]("string"),t,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function u(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function p(e){return u(e),a(e<0?0:0|d(e))}function h(e){const t=e.length<0?0:0|d(e.length),n=a(t);for(let r=0;r=i)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return 0|e}function m(e,t){if(l.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||G(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const n=e.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===n)return 0;let o=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return J(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return K(e).length;default:if(o)return r?-1:J(e).length;t=(""+t).toLowerCase(),o=!0}}function g(e,t,n){let r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return P(this,t,n);case"utf8":case"utf-8":return O(this,t,n);case"ascii":return A(this,t,n);case"latin1":case"binary":return C(this,t,n);case"base64":return j(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function y(e,t,n){const r=e[t];e[t]=e[n],e[n]=r}function v(e,t,n,r,o){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),Z(n=+n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof t&&(t=l.from(t,r)),l.isBuffer(t))return 0===t.length?-1:b(e,t,n,r,o);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):b(e,[t],n,r,o);throw new TypeError("val must be string, number or Buffer")}function b(e,t,n,r,o){let s,i=1,a=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;i=2,a/=2,l/=2,n/=2}function c(e,t){return 1===i?e[t]:e.readUInt16BE(t*i)}if(o){let r=-1;for(s=n;sa&&(n=a-l),s=n;s>=0;s--){let n=!0;for(let r=0;ro&&(r=o):r=o;const s=t.length;let i;for(r>s/2&&(r=s/2),i=0;i>8,o=n%256,s.push(o),s.push(r);return s}(t,e.length-n),e,n,r)}function j(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function O(e,t,n){n=Math.min(e.length,n);const r=[];let o=t;for(;o239?4:t>223?3:t>191?2:1;if(o+i<=n){let n,r,a,l;switch(i){case 1:t<128&&(s=t);break;case 2:n=e[o+1],128==(192&n)&&(l=(31&t)<<6|63&n,l>127&&(s=l));break;case 3:n=e[o+1],r=e[o+2],128==(192&n)&&128==(192&r)&&(l=(15&t)<<12|(63&n)<<6|63&r,l>2047&&(l<55296||l>57343)&&(s=l));break;case 4:n=e[o+1],r=e[o+2],a=e[o+3],128==(192&n)&&128==(192&r)&&128==(192&a)&&(l=(15&t)<<18|(63&n)<<12|(63&r)<<6|63&a,l>65535&&l<1114112&&(s=l))}}null===s?(s=65533,i=1):s>65535&&(s-=65536,r.push(s>>>10&1023|55296),s=56320|1023&s),r.push(s),o+=i}return function(e){const t=e.length;if(t<=k)return String.fromCharCode.apply(String,e);let n="",r=0;for(;rr.length?(l.isBuffer(t)||(t=l.from(t)),t.copy(r,o)):Uint8Array.prototype.set.call(r,t,o);else{if(!l.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(r,o)}o+=t.length}return r},l.byteLength=m,l.prototype._isBuffer=!0,l.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tn&&(e+=" ... "),""},s&&(l.prototype[s]=l.prototype.inspect),l.prototype.compare=function(e,t,n,r,o){if(G(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),!l.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||n>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=n)return 0;if(r>=o)return-1;if(t>=n)return 1;if(this===e)return 0;let s=(o>>>=0)-(r>>>=0),i=(n>>>=0)-(t>>>=0);const a=Math.min(s,i),c=this.slice(r,o),u=e.slice(t,n);for(let e=0;e>>=0,isFinite(n)?(n>>>=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}const o=this.length-t;if((void 0===n||n>o)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");let s=!1;for(;;)switch(r){case"hex":return w(this,e,t,n);case"utf8":case"utf-8":return E(this,e,t,n);case"ascii":case"latin1":case"binary":return x(this,e,t,n);case"base64":return S(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return _(this,e,t,n);default:if(s)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),s=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const k=4096;function A(e,t,n){let r="";n=Math.min(e.length,n);for(let o=t;or)&&(n=r);let o="";for(let r=t;rn)throw new RangeError("Trying to access beyond buffer length")}function T(e,t,n,r,o,s){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function R(e,t,n,r,o){U(t,r,o,e,n,7);let s=Number(t&BigInt(4294967295));e[n++]=s,s>>=8,e[n++]=s,s>>=8,e[n++]=s,s>>=8,e[n++]=s;let i=Number(t>>BigInt(32)&BigInt(4294967295));return e[n++]=i,i>>=8,e[n++]=i,i>>=8,e[n++]=i,i>>=8,e[n++]=i,n}function M(e,t,n,r,o){U(t,r,o,e,n,7);let s=Number(t&BigInt(4294967295));e[n+7]=s,s>>=8,e[n+6]=s,s>>=8,e[n+5]=s,s>>=8,e[n+4]=s;let i=Number(t>>BigInt(32)&BigInt(4294967295));return e[n+3]=i,i>>=8,e[n+2]=i,i>>=8,e[n+1]=i,i>>=8,e[n]=i,n+8}function D(e,t,n,r,o,s){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function F(e,t,n,r,s){return t=+t,n>>>=0,s||D(e,0,n,4),o.write(e,t,n,r,23,4),n+4}function L(e,t,n,r,s){return t=+t,n>>>=0,s||D(e,0,n,8),o.write(e,t,n,r,52,8),n+8}l.prototype.slice=function(e,t){const n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t>>=0,t>>>=0,n||I(e,t,this.length);let r=this[e],o=1,s=0;for(;++s>>=0,t>>>=0,n||I(e,t,this.length);let r=this[e+--t],o=1;for(;t>0&&(o*=256);)r+=this[e+--t]*o;return r},l.prototype.readUint8=l.prototype.readUInt8=function(e,t){return e>>>=0,t||I(e,1,this.length),this[e]},l.prototype.readUint16LE=l.prototype.readUInt16LE=function(e,t){return e>>>=0,t||I(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUint16BE=l.prototype.readUInt16BE=function(e,t){return e>>>=0,t||I(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUint32LE=l.prototype.readUInt32LE=function(e,t){return e>>>=0,t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUint32BE=l.prototype.readUInt32BE=function(e,t){return e>>>=0,t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readBigUInt64LE=X((function(e){z(e>>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||V(e,this.length-8);const r=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,o=this[++e]+256*this[++e]+65536*this[++e]+n*2**24;return BigInt(r)+(BigInt(o)<>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||V(e,this.length-8);const r=t*2**24+65536*this[++e]+256*this[++e]+this[++e],o=this[++e]*2**24+65536*this[++e]+256*this[++e]+n;return(BigInt(r)<>>=0,t>>>=0,n||I(e,t,this.length);let r=this[e],o=1,s=0;for(;++s=o&&(r-=Math.pow(2,8*t)),r},l.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||I(e,t,this.length);let r=t,o=1,s=this[e+--r];for(;r>0&&(o*=256);)s+=this[e+--r]*o;return o*=128,s>=o&&(s-=Math.pow(2,8*t)),s},l.prototype.readInt8=function(e,t){return e>>>=0,t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){e>>>=0,t||I(e,2,this.length);const n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt16BE=function(e,t){e>>>=0,t||I(e,2,this.length);const n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt32LE=function(e,t){return e>>>=0,t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return e>>>=0,t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readBigInt64LE=X((function(e){z(e>>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||V(e,this.length-8);const r=this[e+4]+256*this[e+5]+65536*this[e+6]+(n<<24);return(BigInt(r)<>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||V(e,this.length-8);const r=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(r)<>>=0,t||I(e,4,this.length),o.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return e>>>=0,t||I(e,4,this.length),o.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return e>>>=0,t||I(e,8,this.length),o.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return e>>>=0,t||I(e,8,this.length),o.read(this,e,!1,52,8)},l.prototype.writeUintLE=l.prototype.writeUIntLE=function(e,t,n,r){if(e=+e,t>>>=0,n>>>=0,!r){T(this,e,t,n,Math.pow(2,8*n)-1,0)}let o=1,s=0;for(this[t]=255&e;++s>>=0,n>>>=0,!r){T(this,e,t,n,Math.pow(2,8*n)-1,0)}let o=n-1,s=1;for(this[t+o]=255&e;--o>=0&&(s*=256);)this[t+o]=e/s&255;return t+n},l.prototype.writeUint8=l.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||T(this,e,t,1,255,0),this[t]=255&e,t+1},l.prototype.writeUint16LE=l.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||T(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeUint16BE=l.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||T(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeUint32LE=l.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||T(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},l.prototype.writeUint32BE=l.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||T(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeBigUInt64LE=X((function(e,t=0){return R(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),l.prototype.writeBigUInt64BE=X((function(e,t=0){return M(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),l.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t>>>=0,!r){const r=Math.pow(2,8*n-1);T(this,e,t,n,r-1,-r)}let o=0,s=1,i=0;for(this[t]=255&e;++o>0)-i&255;return t+n},l.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t>>>=0,!r){const r=Math.pow(2,8*n-1);T(this,e,t,n,r-1,-r)}let o=n-1,s=1,i=0;for(this[t+o]=255&e;--o>=0&&(s*=256);)e<0&&0===i&&0!==this[t+o+1]&&(i=1),this[t+o]=(e/s>>0)-i&255;return t+n},l.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||T(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||T(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||T(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||T(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},l.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||T(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeBigInt64LE=X((function(e,t=0){return R(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),l.prototype.writeBigInt64BE=X((function(e,t=0){return M(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),l.prototype.writeFloatLE=function(e,t,n){return F(this,e,t,!0,n)},l.prototype.writeFloatBE=function(e,t,n){return F(this,e,t,!1,n)},l.prototype.writeDoubleLE=function(e,t,n){return L(this,e,t,!0,n)},l.prototype.writeDoubleBE=function(e,t,n){return L(this,e,t,!1,n)},l.prototype.copy=function(e,t,n,r){if(!l.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(o=t;o=r+4;n-=3)t=`_${e.slice(n-3,n)}${t}`;return`${e.slice(0,n)}${t}`}function U(e,t,n,r,o,s){if(e>n||e3?0===t||t===BigInt(0)?`>= 0${r} and < 2${r} ** ${8*(s+1)}${r}`:`>= -(2${r} ** ${8*(s+1)-1}${r}) and < 2 ** ${8*(s+1)-1}${r}`:`>= ${t}${r} and <= ${n}${r}`,new B.ERR_OUT_OF_RANGE("value",o,e)}!function(e,t,n){z(t,"offset"),void 0!==e[t]&&void 0!==e[t+n]||V(t,e.length-(n+1))}(r,o,s)}function z(e,t){if("number"!=typeof e)throw new B.ERR_INVALID_ARG_TYPE(t,"number",e)}function V(e,t,n){if(Math.floor(e)!==e)throw z(e,n),new B.ERR_OUT_OF_RANGE(n||"offset","an integer",e);if(t<0)throw new B.ERR_BUFFER_OUT_OF_BOUNDS;throw new B.ERR_OUT_OF_RANGE(n||"offset",`>= ${n?1:0} and <= ${t}`,e)}$("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),$("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),$("ERR_OUT_OF_RANGE",(function(e,t,n){let r=`The value of "${e}" is out of range.`,o=n;return Number.isInteger(n)&&Math.abs(n)>2**32?o=q(String(n)):"bigint"==typeof n&&(o=String(n),(n>BigInt(2)**BigInt(32)||n<-(BigInt(2)**BigInt(32)))&&(o=q(o)),o+="n"),r+=` It must be ${t}. Received ${o}`,r}),RangeError);const W=/[^+/0-9A-Za-z-_]/g;function J(e,t){let n;t=t||1/0;const r=e.length;let o=null;const s=[];for(let i=0;i55295&&n<57344){if(!o){if(n>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(i+1===r){(t-=3)>-1&&s.push(239,191,189);continue}o=n;continue}if(n<56320){(t-=3)>-1&&s.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(t-=3)>-1&&s.push(239,191,189);if(o=null,n<128){if((t-=1)<0)break;s.push(n)}else if(n<2048){if((t-=2)<0)break;s.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;s.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return s}function K(e){return r.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(W,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function H(e,t,n,r){let o;for(o=0;o=t.length||o>=e.length);++o)t[o+n]=e[o];return o}function G(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function Z(e){return e!=e}const Y=function(){const e="0123456789abcdef",t=new Array(256);for(let n=0;n<16;++n){const r=16*n;for(let o=0;o<16;++o)t[r+o]=e[n]+e[o]}return t}();function X(e){return"undefined"==typeof BigInt?Q:e}function Q(){throw new Error("BigInt not supported")}},21924:(e,t,n)=>{"use strict";var r=n(40210),o=n(55559),s=o(r("String.prototype.indexOf"));e.exports=function(e,t){var n=r(e,!!t);return"function"==typeof n&&s(e,".prototype.")>-1?o(n):n}},55559:(e,t,n)=>{"use strict";var r=n(58612),o=n(40210),s=o("%Function.prototype.apply%"),i=o("%Function.prototype.call%"),a=o("%Reflect.apply%",!0)||r.call(i,s),l=o("%Object.getOwnPropertyDescriptor%",!0),c=o("%Object.defineProperty%",!0),u=o("%Math.max%");if(c)try{c({},"a",{value:1})}catch(e){c=null}e.exports=function(e){var t=a(r,i,arguments);l&&c&&(l(t,"length").configurable&&c(t,"length",{value:1+u(0,e.length-(arguments.length-1))}));return t};var p=function(){return a(r,s,arguments)};c?c(e.exports,"apply",{value:p}):e.exports.apply=p},94184:(e,t)=>{var n;!function(){"use strict";var r={}.hasOwnProperty;function o(){for(var e=[],t=0;t{"use strict";t.parse=function(e,t){if("string"!=typeof e)throw new TypeError("argument str must be a string");var n={},r=(t||{}).decode||o,s=0;for(;s{"use strict";var r=n(11742),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,s,i,a,l,c,u=!1;t||(t={}),n=t.debug||!1;try{if(i=r(),a=document.createRange(),l=document.getSelection(),(c=document.createElement("span")).textContent=e,c.ariaHidden="true",c.style.all="unset",c.style.position="fixed",c.style.top=0,c.style.clip="rect(0, 0, 0, 0)",c.style.whiteSpace="pre",c.style.webkitUserSelect="text",c.style.MozUserSelect="text",c.style.msUserSelect="text",c.style.userSelect="text",c.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),void 0===r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var s=o[t.format]||o.default;window.clipboardData.setData(s,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(c),a.selectNodeContents(c),l.addRange(a),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(r){n&&console.error("unable to copy using execCommand: ",r),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(r){n&&console.error("unable to copy using clipboardData: ",r),n&&console.error("falling back to prompt"),s=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(s,e)}}finally{l&&("function"==typeof l.removeRange?l.removeRange(a):l.removeAllRanges()),c&&document.body.removeChild(c),i()}return u}},90093:(e,t,n)=>{var r=n(28196);e.exports=r},3688:(e,t,n)=>{var r=n(11955);e.exports=r},83838:(e,t,n)=>{var r=n(46279);e.exports=r},15684:(e,t,n)=>{var r=n(19373);e.exports=r},81331:(e,t,n)=>{var r=n(52759);e.exports=r},65362:(e,t,n)=>{var r=n(63383);e.exports=r},91254:(e,t,n)=>{var r=n(57396);e.exports=r},43536:(e,t,n)=>{var r=n(41910);e.exports=r},37331:(e,t,n)=>{var r=n(79427);e.exports=r},68522:(e,t,n)=>{var r=n(62857);e.exports=r},73151:(e,t,n)=>{var r=n(9534);e.exports=r},45012:(e,t,n)=>{var r=n(23059);e.exports=r},80281:(e,t,n)=>{var r=n(92547);n(97522),n(43975),n(45414),e.exports=r},40031:(e,t,n)=>{var r=n(46509);e.exports=r},17487:(e,t,n)=>{var r=n(35774);e.exports=r},54493:(e,t,n)=>{n(77971),n(53242);var r=n(54058);e.exports=r.Array.from},24034:(e,t,n)=>{n(92737);var r=n(54058);e.exports=r.Array.isArray},15367:(e,t,n)=>{n(85906);var r=n(35703);e.exports=r("Array").concat},12710:(e,t,n)=>{n(66274),n(55967);var r=n(35703);e.exports=r("Array").entries},51459:(e,t,n)=>{n(48851);var r=n(35703);e.exports=r("Array").every},6172:(e,t,n)=>{n(80290);var r=n(35703);e.exports=r("Array").fill},62383:(e,t,n)=>{n(21501);var r=n(35703);e.exports=r("Array").filter},60009:(e,t,n)=>{n(44929);var r=n(35703);e.exports=r("Array").findIndex},17671:(e,t,n)=>{n(80833);var r=n(35703);e.exports=r("Array").find},99324:(e,t,n)=>{n(2437);var r=n(35703);e.exports=r("Array").forEach},80991:(e,t,n)=>{n(97690);var r=n(35703);e.exports=r("Array").includes},8700:(e,t,n)=>{n(99076);var r=n(35703);e.exports=r("Array").indexOf},95909:(e,t,n)=>{n(66274),n(55967);var r=n(35703);e.exports=r("Array").keys},6442:(e,t,n)=>{n(75915);var r=n(35703);e.exports=r("Array").lastIndexOf},23866:(e,t,n)=>{n(68787);var r=n(35703);e.exports=r("Array").map},9896:(e,t,n)=>{n(48528);var r=n(35703);e.exports=r("Array").push},52999:(e,t,n)=>{n(81876);var r=n(35703);e.exports=r("Array").reduce},24900:(e,t,n)=>{n(60186);var r=n(35703);e.exports=r("Array").slice},3824:(e,t,n)=>{n(36026);var r=n(35703);e.exports=r("Array").some},2948:(e,t,n)=>{n(4115);var r=n(35703);e.exports=r("Array").sort},78209:(e,t,n)=>{n(98611);var r=n(35703);e.exports=r("Array").splice},14423:(e,t,n)=>{n(66274),n(55967);var r=n(35703);e.exports=r("Array").values},81103:(e,t,n)=>{n(95160);var r=n(54058);e.exports=r.Date.now},27700:(e,t,n)=>{n(73381);var r=n(35703);e.exports=r("Function").bind},16246:(e,t,n)=>{var r=n(7046),o=n(27700),s=Function.prototype;e.exports=function(e){var t=e.bind;return e===s||r(s,e)&&t===s.bind?o:t}},56043:(e,t,n)=>{var r=n(7046),o=n(15367),s=Array.prototype;e.exports=function(e){var t=e.concat;return e===s||r(s,e)&&t===s.concat?o:t}},13160:(e,t,n)=>{var r=n(7046),o=n(51459),s=Array.prototype;e.exports=function(e){var t=e.every;return e===s||r(s,e)&&t===s.every?o:t}},80446:(e,t,n)=>{var r=n(7046),o=n(6172),s=Array.prototype;e.exports=function(e){var t=e.fill;return e===s||r(s,e)&&t===s.fill?o:t}},2480:(e,t,n)=>{var r=n(7046),o=n(62383),s=Array.prototype;e.exports=function(e){var t=e.filter;return e===s||r(s,e)&&t===s.filter?o:t}},7147:(e,t,n)=>{var r=n(7046),o=n(60009),s=Array.prototype;e.exports=function(e){var t=e.findIndex;return e===s||r(s,e)&&t===s.findIndex?o:t}},32236:(e,t,n)=>{var r=n(7046),o=n(17671),s=Array.prototype;e.exports=function(e){var t=e.find;return e===s||r(s,e)&&t===s.find?o:t}},58557:(e,t,n)=>{var r=n(7046),o=n(80991),s=n(21631),i=Array.prototype,a=String.prototype;e.exports=function(e){var t=e.includes;return e===i||r(i,e)&&t===i.includes?o:"string"==typeof e||e===a||r(a,e)&&t===a.includes?s:t}},34570:(e,t,n)=>{var r=n(7046),o=n(8700),s=Array.prototype;e.exports=function(e){var t=e.indexOf;return e===s||r(s,e)&&t===s.indexOf?o:t}},57564:(e,t,n)=>{var r=n(7046),o=n(6442),s=Array.prototype;e.exports=function(e){var t=e.lastIndexOf;return e===s||r(s,e)&&t===s.lastIndexOf?o:t}},88287:(e,t,n)=>{var r=n(7046),o=n(23866),s=Array.prototype;e.exports=function(e){var t=e.map;return e===s||r(s,e)&&t===s.map?o:t}},93993:(e,t,n)=>{var r=n(7046),o=n(9896),s=Array.prototype;e.exports=function(e){var t=e.push;return e===s||r(s,e)&&t===s.push?o:t}},68025:(e,t,n)=>{var r=n(7046),o=n(52999),s=Array.prototype;e.exports=function(e){var t=e.reduce;return e===s||r(s,e)&&t===s.reduce?o:t}},59257:(e,t,n)=>{var r=n(7046),o=n(80454),s=String.prototype;e.exports=function(e){var t=e.repeat;return"string"==typeof e||e===s||r(s,e)&&t===s.repeat?o:t}},69601:(e,t,n)=>{var r=n(7046),o=n(24900),s=Array.prototype;e.exports=function(e){var t=e.slice;return e===s||r(s,e)&&t===s.slice?o:t}},28299:(e,t,n)=>{var r=n(7046),o=n(3824),s=Array.prototype;e.exports=function(e){var t=e.some;return e===s||r(s,e)&&t===s.some?o:t}},69355:(e,t,n)=>{var r=n(7046),o=n(2948),s=Array.prototype;e.exports=function(e){var t=e.sort;return e===s||r(s,e)&&t===s.sort?o:t}},18339:(e,t,n)=>{var r=n(7046),o=n(78209),s=Array.prototype;e.exports=function(e){var t=e.splice;return e===s||r(s,e)&&t===s.splice?o:t}},71611:(e,t,n)=>{var r=n(7046),o=n(3269),s=String.prototype;e.exports=function(e){var t=e.startsWith;return"string"==typeof e||e===s||r(s,e)&&t===s.startsWith?o:t}},62774:(e,t,n)=>{var r=n(7046),o=n(13348),s=String.prototype;e.exports=function(e){var t=e.trim;return"string"==typeof e||e===s||r(s,e)&&t===s.trim?o:t}},84426:(e,t,n)=>{n(32619);var r=n(54058),o=n(79730);r.JSON||(r.JSON={stringify:JSON.stringify}),e.exports=function(e,t,n){return o(r.JSON.stringify,null,arguments)}},91018:(e,t,n)=>{n(66274),n(37501),n(55967),n(77971);var r=n(54058);e.exports=r.Map},97849:(e,t,n)=>{n(54973),e.exports=Math.pow(2,-52)},3820:(e,t,n)=>{n(30800);var r=n(54058);e.exports=r.Number.isInteger},45999:(e,t,n)=>{n(49221);var r=n(54058);e.exports=r.Object.assign},7702:(e,t,n)=>{n(74979);var r=n(54058).Object,o=e.exports=function(e,t){return r.defineProperties(e,t)};r.defineProperties.sham&&(o.sham=!0)},48171:(e,t,n)=>{n(86450);var r=n(54058).Object,o=e.exports=function(e,t,n){return r.defineProperty(e,t,n)};r.defineProperty.sham&&(o.sham=!0)},73081:(e,t,n)=>{n(94366);var r=n(54058);e.exports=r.Object.entries},7699:(e,t,n)=>{n(66274),n(28387);var r=n(54058);e.exports=r.Object.fromEntries},286:(e,t,n)=>{n(46924);var r=n(54058).Object,o=e.exports=function(e,t){return r.getOwnPropertyDescriptor(e,t)};r.getOwnPropertyDescriptor.sham&&(o.sham=!0)},92766:(e,t,n)=>{n(88482);var r=n(54058);e.exports=r.Object.getOwnPropertyDescriptors},30498:(e,t,n)=>{n(35824);var r=n(54058);e.exports=r.Object.getOwnPropertySymbols},48494:(e,t,n)=>{n(21724);var r=n(54058);e.exports=r.Object.keys},98430:(e,t,n)=>{n(26614);var r=n(54058);e.exports=r.Object.values},52956:(e,t,n)=>{n(47627),n(66274),n(55967),n(98881),n(4560),n(91302),n(44349),n(77971);var r=n(54058);e.exports=r.Promise},76998:(e,t,n)=>{n(66274),n(55967),n(69008),n(77971);var r=n(54058);e.exports=r.Set},97089:(e,t,n)=>{n(74679);var r=n(54058);e.exports=r.String.raw},21631:(e,t,n)=>{n(11035);var r=n(35703);e.exports=r("String").includes},80454:(e,t,n)=>{n(60986);var r=n(35703);e.exports=r("String").repeat},3269:(e,t,n)=>{n(94761);var r=n(35703);e.exports=r("String").startsWith},13348:(e,t,n)=>{n(57398);var r=n(35703);e.exports=r("String").trim},57473:(e,t,n)=>{n(85906),n(55967),n(35824),n(8555),n(52615),n(21732),n(35903),n(1825),n(28394),n(45915),n(61766),n(62737),n(89911),n(74315),n(63131),n(64714),n(70659),n(69120),n(79413),n(1502);var r=n(54058);e.exports=r.Symbol},24227:(e,t,n)=>{n(66274),n(55967),n(77971),n(1825);var r=n(11477);e.exports=r.f("iterator")},62978:(e,t,n)=>{n(18084),n(63131);var r=n(11477);e.exports=r.f("toPrimitive")},32304:(e,t,n)=>{n(66274),n(55967),n(54334);var r=n(54058);e.exports=r.WeakMap},29567:(e,t,n)=>{n(66274),n(55967),n(1773);var r=n(54058);e.exports=r.WeakSet},14122:(e,t,n)=>{e.exports=n(89097)},44442:(e,t,n)=>{e.exports=n(51675)},57152:(e,t,n)=>{e.exports=n(82507)},69447:(e,t,n)=>{e.exports=n(628)},1449:(e,t,n)=>{e.exports=n(34501)},60269:(e,t,n)=>{e.exports=n(76936)},70573:(e,t,n)=>{e.exports=n(18180)},73685:(e,t,n)=>{e.exports=n(80621)},27533:(e,t,n)=>{e.exports=n(22948)},39057:(e,t,n)=>{e.exports=n(82108)},84710:(e,t,n)=>{e.exports=n(14058)},93799:(e,t,n)=>{e.exports=n(92093)},86600:(e,t,n)=>{e.exports=n(52201)},9759:(e,t,n)=>{e.exports=n(27398)},71384:(e,t,n)=>{e.exports=n(26189)},89097:(e,t,n)=>{var r=n(90093);e.exports=r},51675:(e,t,n)=>{var r=n(3688);e.exports=r},82507:(e,t,n)=>{var r=n(83838);e.exports=r},628:(e,t,n)=>{var r=n(15684);e.exports=r},34501:(e,t,n)=>{var r=n(81331);e.exports=r},76936:(e,t,n)=>{var r=n(65362);e.exports=r},18180:(e,t,n)=>{var r=n(91254);e.exports=r},80621:(e,t,n)=>{var r=n(43536);e.exports=r},22948:(e,t,n)=>{var r=n(37331);e.exports=r},82108:(e,t,n)=>{var r=n(68522);e.exports=r},14058:(e,t,n)=>{var r=n(73151);e.exports=r},92093:(e,t,n)=>{var r=n(45012);e.exports=r},52201:(e,t,n)=>{var r=n(80281);n(28783),n(97618),n(6989),n(65799),n(46774),n(22731),n(85605),n(31943),n(80620),n(36172),e.exports=r},27398:(e,t,n)=>{var r=n(40031);e.exports=r},26189:(e,t,n)=>{var r=n(17487);e.exports=r},24883:(e,t,n)=>{var r=n(57475),o=n(69826),s=TypeError;e.exports=function(e){if(r(e))return e;throw s(o(e)+" is not a function")}},174:(e,t,n)=>{var r=n(24284),o=n(69826),s=TypeError;e.exports=function(e){if(r(e))return e;throw s(o(e)+" is not a constructor")}},11851:(e,t,n)=>{var r=n(57475),o=String,s=TypeError;e.exports=function(e){if("object"==typeof e||r(e))return e;throw s("Can't set "+o(e)+" as a prototype")}},18479:e=>{e.exports=function(){}},5743:(e,t,n)=>{var r=n(7046),o=TypeError;e.exports=function(e,t){if(r(t,e))return e;throw o("Incorrect invocation")}},96059:(e,t,n)=>{var r=n(10941),o=String,s=TypeError;e.exports=function(e){if(r(e))return e;throw s(o(e)+" is not an object")}},97135:(e,t,n)=>{var r=n(95981);e.exports=r((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}}))},91860:(e,t,n)=>{"use strict";var r=n(89678),o=n(59413),s=n(10623);e.exports=function(e){for(var t=r(this),n=s(t),i=arguments.length,a=o(i>1?arguments[1]:void 0,n),l=i>2?arguments[2]:void 0,c=void 0===l?n:o(l,n);c>a;)t[a++]=e;return t}},56837:(e,t,n)=>{"use strict";var r=n(3610).forEach,o=n(34194)("forEach");e.exports=o?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},11354:(e,t,n)=>{"use strict";var r=n(86843),o=n(78834),s=n(89678),i=n(75196),a=n(6782),l=n(24284),c=n(10623),u=n(55449),p=n(53476),h=n(22902),f=Array;e.exports=function(e){var t=s(e),n=l(this),d=arguments.length,m=d>1?arguments[1]:void 0,g=void 0!==m;g&&(m=r(m,d>2?arguments[2]:void 0));var y,v,b,w,E,x,S=h(t),_=0;if(!S||this===f&&a(S))for(y=c(t),v=n?new this(y):f(y);y>_;_++)x=g?m(t[_],_):t[_],u(v,_,x);else for(E=(w=p(t,S)).next,v=n?new this:[];!(b=o(E,w)).done;_++)x=g?i(w,m,[b.value,_],!0):b.value,u(v,_,x);return v.length=_,v}},31692:(e,t,n)=>{var r=n(74529),o=n(59413),s=n(10623),i=function(e){return function(t,n,i){var a,l=r(t),c=s(l),u=o(i,c);if(e&&n!=n){for(;c>u;)if((a=l[u++])!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:i(!0),indexOf:i(!1)}},3610:(e,t,n)=>{var r=n(86843),o=n(95329),s=n(37026),i=n(89678),a=n(10623),l=n(64692),c=o([].push),u=function(e){var t=1==e,n=2==e,o=3==e,u=4==e,p=6==e,h=7==e,f=5==e||p;return function(d,m,g,y){for(var v,b,w=i(d),E=s(w),x=r(m,g),S=a(E),_=0,j=y||l,O=t?j(d,S):n||h?j(d,0):void 0;S>_;_++)if((f||_ in E)&&(b=x(v=E[_],_,w),e))if(t)O[_]=b;else if(b)switch(e){case 3:return!0;case 5:return v;case 6:return _;case 2:c(O,v)}else switch(e){case 4:return!1;case 7:c(O,v)}return p?-1:o||u?u:O}};e.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6),filterReject:u(7)}},67145:(e,t,n)=>{"use strict";var r=n(79730),o=n(74529),s=n(62435),i=n(10623),a=n(34194),l=Math.min,c=[].lastIndexOf,u=!!c&&1/[1].lastIndexOf(1,-0)<0,p=a("lastIndexOf"),h=u||!p;e.exports=h?function(e){if(u)return r(c,this,arguments)||0;var t=o(this),n=i(t),a=n-1;for(arguments.length>1&&(a=l(a,s(arguments[1]))),a<0&&(a=n+a);a>=0;a--)if(a in t&&t[a]===e)return a||0;return-1}:c},50568:(e,t,n)=>{var r=n(95981),o=n(99813),s=n(53385),i=o("species");e.exports=function(e){return s>=51||!r((function(){var t=[];return(t.constructor={})[i]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},34194:(e,t,n)=>{"use strict";var r=n(95981);e.exports=function(e,t){var n=[][e];return!!n&&r((function(){n.call(null,t||function(){return 1},1)}))}},46499:(e,t,n)=>{var r=n(24883),o=n(89678),s=n(37026),i=n(10623),a=TypeError,l=function(e){return function(t,n,l,c){r(n);var u=o(t),p=s(u),h=i(u),f=e?h-1:0,d=e?-1:1;if(l<2)for(;;){if(f in p){c=p[f],f+=d;break}if(f+=d,e?f<0:h<=f)throw a("Reduce of empty array with no initial value")}for(;e?f>=0:h>f;f+=d)f in p&&(c=n(c,p[f],f,u));return c}};e.exports={left:l(!1),right:l(!0)}},89779:(e,t,n)=>{"use strict";var r=n(55746),o=n(1052),s=TypeError,i=Object.getOwnPropertyDescriptor,a=r&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();e.exports=a?function(e,t){if(o(e)&&!i(e,"length").writable)throw s("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},15790:(e,t,n)=>{var r=n(59413),o=n(10623),s=n(55449),i=Array,a=Math.max;e.exports=function(e,t,n){for(var l=o(e),c=r(t,l),u=r(void 0===n?l:n,l),p=i(a(u-c,0)),h=0;c{var r=n(95329);e.exports=r([].slice)},61388:(e,t,n)=>{var r=n(15790),o=Math.floor,s=function(e,t){var n=e.length,l=o(n/2);return n<8?i(e,t):a(e,s(r(e,0,l),t),s(r(e,l),t),t)},i=function(e,t){for(var n,r,o=e.length,s=1;s0;)e[r]=e[--r];r!==s++&&(e[r]=n)}return e},a=function(e,t,n,r){for(var o=t.length,s=n.length,i=0,a=0;i{var r=n(1052),o=n(24284),s=n(10941),i=n(99813)("species"),a=Array;e.exports=function(e){var t;return r(e)&&(t=e.constructor,(o(t)&&(t===a||r(t.prototype))||s(t)&&null===(t=t[i]))&&(t=void 0)),void 0===t?a:t}},64692:(e,t,n)=>{var r=n(5693);e.exports=function(e,t){return new(r(e))(0===t?0:t)}},75196:(e,t,n)=>{var r=n(96059),o=n(7609);e.exports=function(e,t,n,s){try{return s?t(r(n)[0],n[1]):t(n)}catch(t){o(e,"throw",t)}}},21385:(e,t,n)=>{var r=n(99813)("iterator"),o=!1;try{var s=0,i={next:function(){return{done:!!s++}},return:function(){o=!0}};i[r]=function(){return this},Array.from(i,(function(){throw 2}))}catch(e){}e.exports=function(e,t){if(!t&&!o)return!1;var n=!1;try{var s={};s[r]=function(){return{next:function(){return{done:n=!0}}}},e(s)}catch(e){}return n}},82532:(e,t,n)=>{var r=n(95329),o=r({}.toString),s=r("".slice);e.exports=function(e){return s(o(e),8,-1)}},9697:(e,t,n)=>{var r=n(22885),o=n(57475),s=n(82532),i=n(99813)("toStringTag"),a=Object,l="Arguments"==s(function(){return arguments}());e.exports=r?s:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=a(e),i))?n:l?s(t):"Object"==(r=s(t))&&o(t.callee)?"Arguments":r}},85616:(e,t,n)=>{"use strict";var r=n(29290),o=n(29202),s=n(94380),i=n(86843),a=n(5743),l=n(82119),c=n(93091),u=n(75105),p=n(23538),h=n(94431),f=n(55746),d=n(21647).fastKey,m=n(45402),g=m.set,y=m.getterFor;e.exports={getConstructor:function(e,t,n,u){var p=e((function(e,o){a(e,h),g(e,{type:t,index:r(null),first:void 0,last:void 0,size:0}),f||(e.size=0),l(o)||c(o,e[u],{that:e,AS_ENTRIES:n})})),h=p.prototype,m=y(t),v=function(e,t,n){var r,o,s=m(e),i=b(e,t);return i?i.value=n:(s.last=i={index:o=d(t,!0),key:t,value:n,previous:r=s.last,next:void 0,removed:!1},s.first||(s.first=i),r&&(r.next=i),f?s.size++:e.size++,"F"!==o&&(s.index[o]=i)),e},b=function(e,t){var n,r=m(e),o=d(t);if("F"!==o)return r.index[o];for(n=r.first;n;n=n.next)if(n.key==t)return n};return s(h,{clear:function(){for(var e=m(this),t=e.index,n=e.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete t[n.index],n=n.next;e.first=e.last=void 0,f?e.size=0:this.size=0},delete:function(e){var t=this,n=m(t),r=b(t,e);if(r){var o=r.next,s=r.previous;delete n.index[r.index],r.removed=!0,s&&(s.next=o),o&&(o.previous=s),n.first==r&&(n.first=o),n.last==r&&(n.last=s),f?n.size--:t.size--}return!!r},forEach:function(e){for(var t,n=m(this),r=i(e,arguments.length>1?arguments[1]:void 0);t=t?t.next:n.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!b(this,e)}}),s(h,n?{get:function(e){var t=b(this,e);return t&&t.value},set:function(e,t){return v(this,0===e?0:e,t)}}:{add:function(e){return v(this,e=0===e?0:e,e)}}),f&&o(h,"size",{configurable:!0,get:function(){return m(this).size}}),p},setStrong:function(e,t,n){var r=t+" Iterator",o=y(t),s=y(r);u(e,t,(function(e,t){g(this,{type:r,target:e,state:o(e),kind:t,last:void 0})}),(function(){for(var e=s(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?p("keys"==t?n.key:"values"==t?n.value:[n.key,n.value],!1):(e.target=void 0,p(void 0,!0))}),n?"entries":"values",!n,!0),h(t)}}},8850:(e,t,n)=>{"use strict";var r=n(95329),o=n(94380),s=n(21647).getWeakData,i=n(5743),a=n(96059),l=n(82119),c=n(10941),u=n(93091),p=n(3610),h=n(90953),f=n(45402),d=f.set,m=f.getterFor,g=p.find,y=p.findIndex,v=r([].splice),b=0,w=function(e){return e.frozen||(e.frozen=new E)},E=function(){this.entries=[]},x=function(e,t){return g(e.entries,(function(e){return e[0]===t}))};E.prototype={get:function(e){var t=x(this,e);if(t)return t[1]},has:function(e){return!!x(this,e)},set:function(e,t){var n=x(this,e);n?n[1]=t:this.entries.push([e,t])},delete:function(e){var t=y(this.entries,(function(t){return t[0]===e}));return~t&&v(this.entries,t,1),!!~t}},e.exports={getConstructor:function(e,t,n,r){var p=e((function(e,o){i(e,f),d(e,{type:t,id:b++,frozen:void 0}),l(o)||u(o,e[r],{that:e,AS_ENTRIES:n})})),f=p.prototype,g=m(t),y=function(e,t,n){var r=g(e),o=s(a(t),!0);return!0===o?w(r).set(t,n):o[r.id]=n,e};return o(f,{delete:function(e){var t=g(this);if(!c(e))return!1;var n=s(e);return!0===n?w(t).delete(e):n&&h(n,t.id)&&delete n[t.id]},has:function(e){var t=g(this);if(!c(e))return!1;var n=s(e);return!0===n?w(t).has(e):n&&h(n,t.id)}}),o(f,n?{get:function(e){var t=g(this);if(c(e)){var n=s(e);return!0===n?w(t).get(e):n?n[t.id]:void 0}},set:function(e,t){return y(this,e,t)}}:{add:function(e){return y(this,e,!0)}}),p}}},24683:(e,t,n)=>{"use strict";var r=n(76887),o=n(21899),s=n(21647),i=n(95981),a=n(32029),l=n(93091),c=n(5743),u=n(57475),p=n(10941),h=n(90904),f=n(65988).f,d=n(3610).forEach,m=n(55746),g=n(45402),y=g.set,v=g.getterFor;e.exports=function(e,t,n){var g,b=-1!==e.indexOf("Map"),w=-1!==e.indexOf("Weak"),E=b?"set":"add",x=o[e],S=x&&x.prototype,_={};if(m&&u(x)&&(w||S.forEach&&!i((function(){(new x).entries().next()})))){var j=(g=t((function(t,n){y(c(t,j),{type:e,collection:new x}),null!=n&&l(n,t[E],{that:t,AS_ENTRIES:b})}))).prototype,O=v(e);d(["add","clear","delete","forEach","get","has","set","keys","values","entries"],(function(e){var t="add"==e||"set"==e;!(e in S)||w&&"clear"==e||a(j,e,(function(n,r){var o=O(this).collection;if(!t&&w&&!p(n))return"get"==e&&void 0;var s=o[e](0===n?0:n,r);return t?this:s}))})),w||f(j,"size",{configurable:!0,get:function(){return O(this).collection.size}})}else g=n.getConstructor(t,e,b,E),s.enable();return h(g,e,!1,!0),_[e]=g,r({global:!0,forced:!0},_),w||n.setStrong(g,e,b),g}},23489:(e,t,n)=>{var r=n(90953),o=n(31136),s=n(49677),i=n(65988);e.exports=function(e,t,n){for(var a=o(t),l=i.f,c=s.f,u=0;u{var r=n(99813)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[r]=!1,"/./"[e](t)}catch(e){}}return!1}},64160:(e,t,n)=>{var r=n(95981);e.exports=!r((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},23538:e=>{e.exports=function(e,t){return{value:e,done:t}}},32029:(e,t,n)=>{var r=n(55746),o=n(65988),s=n(31887);e.exports=r?function(e,t,n){return o.f(e,t,s(1,n))}:function(e,t,n){return e[t]=n,e}},31887:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},55449:(e,t,n)=>{"use strict";var r=n(83894),o=n(65988),s=n(31887);e.exports=function(e,t,n){var i=r(t);i in e?o.f(e,i,s(0,n)):e[i]=n}},29202:(e,t,n)=>{var r=n(65988);e.exports=function(e,t,n){return r.f(e,t,n)}},95929:(e,t,n)=>{var r=n(32029);e.exports=function(e,t,n,o){return o&&o.enumerable?e[t]=n:r(e,t,n),e}},94380:(e,t,n)=>{var r=n(95929);e.exports=function(e,t,n){for(var o in t)n&&n.unsafe&&e[o]?e[o]=t[o]:r(e,o,t[o],n);return e}},75609:(e,t,n)=>{var r=n(21899),o=Object.defineProperty;e.exports=function(e,t){try{o(r,e,{value:t,configurable:!0,writable:!0})}catch(n){r[e]=t}return t}},15863:(e,t,n)=>{"use strict";var r=n(69826),o=TypeError;e.exports=function(e,t){if(!delete e[t])throw o("Cannot delete property "+r(t)+" of "+r(e))}},55746:(e,t,n)=>{var r=n(95981);e.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},76616:e=>{var t="object"==typeof document&&document.all,n=void 0===t&&void 0!==t;e.exports={all:t,IS_HTMLDDA:n}},61333:(e,t,n)=>{var r=n(21899),o=n(10941),s=r.document,i=o(s)&&o(s.createElement);e.exports=function(e){return i?s.createElement(e):{}}},66796:e=>{var t=TypeError;e.exports=function(e){if(e>9007199254740991)throw t("Maximum allowed index exceeded");return e}},63281:e=>{e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},34342:(e,t,n)=>{var r=n(2861).match(/firefox\/(\d+)/i);e.exports=!!r&&+r[1]},23321:(e,t,n)=>{var r=n(48501),o=n(6049);e.exports=!r&&!o&&"object"==typeof window&&"object"==typeof document},56491:e=>{e.exports="function"==typeof Bun&&Bun&&"string"==typeof Bun.version},48501:e=>{e.exports="object"==typeof Deno&&Deno&&"object"==typeof Deno.version},81046:(e,t,n)=>{var r=n(2861);e.exports=/MSIE|Trident/.test(r)},4470:(e,t,n)=>{var r=n(2861);e.exports=/ipad|iphone|ipod/i.test(r)&&"undefined"!=typeof Pebble},22749:(e,t,n)=>{var r=n(2861);e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(r)},6049:(e,t,n)=>{var r=n(34155),o=n(82532);e.exports=void 0!==r&&"process"==o(r)},58045:(e,t,n)=>{var r=n(2861);e.exports=/web0s(?!.*chrome)/i.test(r)},2861:e=>{e.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},53385:(e,t,n)=>{var r,o,s=n(21899),i=n(2861),a=s.process,l=s.Deno,c=a&&a.versions||l&&l.version,u=c&&c.v8;u&&(o=(r=u.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!o&&i&&(!(r=i.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=i.match(/Chrome\/(\d+)/))&&(o=+r[1]),e.exports=o},18938:(e,t,n)=>{var r=n(2861).match(/AppleWebKit\/(\d+)\./);e.exports=!!r&&+r[1]},35703:(e,t,n)=>{var r=n(54058);e.exports=function(e){return r[e+"Prototype"]}},56759:e=>{e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},53995:(e,t,n)=>{var r=n(95329),o=Error,s=r("".replace),i=String(o("zxcasd").stack),a=/\n\s*at [^:]*:[^\n]*/,l=a.test(i);e.exports=function(e,t){if(l&&"string"==typeof e&&!o.prepareStackTrace)for(;t--;)e=s(e,a,"");return e}},79585:(e,t,n)=>{var r=n(32029),o=n(53995),s=n(18780),i=Error.captureStackTrace;e.exports=function(e,t,n,a){s&&(i?i(e,t):r(e,"stack",o(n,a)))}},18780:(e,t,n)=>{var r=n(95981),o=n(31887);e.exports=!r((function(){var e=Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",o(1,7)),7!==e.stack)}))},76887:(e,t,n)=>{"use strict";var r=n(21899),o=n(79730),s=n(97484),i=n(57475),a=n(49677).f,l=n(37252),c=n(54058),u=n(86843),p=n(32029),h=n(90953),f=function(e){var t=function(n,r,s){if(this instanceof t){switch(arguments.length){case 0:return new e;case 1:return new e(n);case 2:return new e(n,r)}return new e(n,r,s)}return o(e,this,arguments)};return t.prototype=e.prototype,t};e.exports=function(e,t){var n,o,d,m,g,y,v,b,w,E=e.target,x=e.global,S=e.stat,_=e.proto,j=x?r:S?r[E]:(r[E]||{}).prototype,O=x?c:c[E]||p(c,E,{})[E],k=O.prototype;for(m in t)o=!(n=l(x?m:E+(S?".":"#")+m,e.forced))&&j&&h(j,m),y=O[m],o&&(v=e.dontCallGetSet?(w=a(j,m))&&w.value:j[m]),g=o&&v?v:t[m],o&&typeof y==typeof g||(b=e.bind&&o?u(g,r):e.wrap&&o?f(g):_&&i(g)?s(g):g,(e.sham||g&&g.sham||y&&y.sham)&&p(b,"sham",!0),p(O,m,b),_&&(h(c,d=E+"Prototype")||p(c,d,{}),p(c[d],m,g),e.real&&k&&(n||!k[m])&&p(k,m,g)))}},95981:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},45602:(e,t,n)=>{var r=n(95981);e.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},79730:(e,t,n)=>{var r=n(18285),o=Function.prototype,s=o.apply,i=o.call;e.exports="object"==typeof Reflect&&Reflect.apply||(r?i.bind(s):function(){return i.apply(s,arguments)})},86843:(e,t,n)=>{var r=n(97484),o=n(24883),s=n(18285),i=r(r.bind);e.exports=function(e,t){return o(e),void 0===t?e:s?i(e,t):function(){return e.apply(t,arguments)}}},18285:(e,t,n)=>{var r=n(95981);e.exports=!r((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},98308:(e,t,n)=>{"use strict";var r=n(95329),o=n(24883),s=n(10941),i=n(90953),a=n(93765),l=n(18285),c=Function,u=r([].concat),p=r([].join),h={};e.exports=l?c.bind:function(e){var t=o(this),n=t.prototype,r=a(arguments,1),l=function(){var n=u(r,a(arguments));return this instanceof l?function(e,t,n){if(!i(h,t)){for(var r=[],o=0;o{var r=n(18285),o=Function.prototype.call;e.exports=r?o.bind(o):function(){return o.apply(o,arguments)}},79417:(e,t,n)=>{var r=n(55746),o=n(90953),s=Function.prototype,i=r&&Object.getOwnPropertyDescriptor,a=o(s,"name"),l=a&&"something"===function(){}.name,c=a&&(!r||r&&i(s,"name").configurable);e.exports={EXISTS:a,PROPER:l,CONFIGURABLE:c}},45526:(e,t,n)=>{var r=n(95329),o=n(24883);e.exports=function(e,t,n){try{return r(o(Object.getOwnPropertyDescriptor(e,t)[n]))}catch(e){}}},97484:(e,t,n)=>{var r=n(82532),o=n(95329);e.exports=function(e){if("Function"===r(e))return o(e)}},95329:(e,t,n)=>{var r=n(18285),o=Function.prototype,s=o.call,i=r&&o.bind.bind(s,s);e.exports=r?i:function(e){return function(){return s.apply(e,arguments)}}},626:(e,t,n)=>{var r=n(54058),o=n(21899),s=n(57475),i=function(e){return s(e)?e:void 0};e.exports=function(e,t){return arguments.length<2?i(r[e])||i(o[e]):r[e]&&r[e][t]||o[e]&&o[e][t]}},22902:(e,t,n)=>{var r=n(9697),o=n(14229),s=n(82119),i=n(12077),a=n(99813)("iterator");e.exports=function(e){if(!s(e))return o(e,a)||o(e,"@@iterator")||i[r(e)]}},53476:(e,t,n)=>{var r=n(78834),o=n(24883),s=n(96059),i=n(69826),a=n(22902),l=TypeError;e.exports=function(e,t){var n=arguments.length<2?a(e):t;if(o(n))return s(r(n,e));throw l(i(e)+" is not iterable")}},33323:(e,t,n)=>{var r=n(95329),o=n(1052),s=n(57475),i=n(82532),a=n(85803),l=r([].push);e.exports=function(e){if(s(e))return e;if(o(e)){for(var t=e.length,n=[],r=0;r{var r=n(24883),o=n(82119);e.exports=function(e,t){var n=e[t];return o(n)?void 0:r(n)}},21899:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||this||Function("return this")()},90953:(e,t,n)=>{var r=n(95329),o=n(89678),s=r({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return s(o(e),t)}},27748:e=>{e.exports={}},34845:e=>{e.exports=function(e,t){try{1==arguments.length?console.error(e):console.error(e,t)}catch(e){}}},15463:(e,t,n)=>{var r=n(626);e.exports=r("document","documentElement")},2840:(e,t,n)=>{var r=n(55746),o=n(95981),s=n(61333);e.exports=!r&&!o((function(){return 7!=Object.defineProperty(s("div"),"a",{get:function(){return 7}}).a}))},37026:(e,t,n)=>{var r=n(95329),o=n(95981),s=n(82532),i=Object,a=r("".split);e.exports=o((function(){return!i("z").propertyIsEnumerable(0)}))?function(e){return"String"==s(e)?a(e,""):i(e)}:i},81302:(e,t,n)=>{var r=n(95329),o=n(57475),s=n(63030),i=r(Function.toString);o(s.inspectSource)||(s.inspectSource=function(e){return i(e)}),e.exports=s.inspectSource},53794:(e,t,n)=>{var r=n(10941),o=n(32029);e.exports=function(e,t){r(t)&&"cause"in t&&o(e,"cause",t.cause)}},21647:(e,t,n)=>{var r=n(76887),o=n(95329),s=n(27748),i=n(10941),a=n(90953),l=n(65988).f,c=n(10946),u=n(684),p=n(91584),h=n(99418),f=n(45602),d=!1,m=h("meta"),g=0,y=function(e){l(e,m,{value:{objectID:"O"+g++,weakData:{}}})},v=e.exports={enable:function(){v.enable=function(){},d=!0;var e=c.f,t=o([].splice),n={};n[m]=1,e(n).length&&(c.f=function(n){for(var r=e(n),o=0,s=r.length;o{var r,o,s,i=n(47093),a=n(21899),l=n(10941),c=n(32029),u=n(90953),p=n(63030),h=n(44262),f=n(27748),d="Object already initialized",m=a.TypeError,g=a.WeakMap;if(i||p.state){var y=p.state||(p.state=new g);y.get=y.get,y.has=y.has,y.set=y.set,r=function(e,t){if(y.has(e))throw m(d);return t.facade=e,y.set(e,t),t},o=function(e){return y.get(e)||{}},s=function(e){return y.has(e)}}else{var v=h("state");f[v]=!0,r=function(e,t){if(u(e,v))throw m(d);return t.facade=e,c(e,v,t),t},o=function(e){return u(e,v)?e[v]:{}},s=function(e){return u(e,v)}}e.exports={set:r,get:o,has:s,enforce:function(e){return s(e)?o(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=o(t)).type!==e)throw m("Incompatible receiver, "+e+" required");return n}}}},6782:(e,t,n)=>{var r=n(99813),o=n(12077),s=r("iterator"),i=Array.prototype;e.exports=function(e){return void 0!==e&&(o.Array===e||i[s]===e)}},1052:(e,t,n)=>{var r=n(82532);e.exports=Array.isArray||function(e){return"Array"==r(e)}},57475:(e,t,n)=>{var r=n(76616),o=r.all;e.exports=r.IS_HTMLDDA?function(e){return"function"==typeof e||e===o}:function(e){return"function"==typeof e}},24284:(e,t,n)=>{var r=n(95329),o=n(95981),s=n(57475),i=n(9697),a=n(626),l=n(81302),c=function(){},u=[],p=a("Reflect","construct"),h=/^\s*(?:class|function)\b/,f=r(h.exec),d=!h.exec(c),m=function(e){if(!s(e))return!1;try{return p(c,u,e),!0}catch(e){return!1}},g=function(e){if(!s(e))return!1;switch(i(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return d||!!f(h,l(e))}catch(e){return!0}};g.sham=!0,e.exports=!p||o((function(){var e;return m(m.call)||!m(Object)||!m((function(){e=!0}))||e}))?g:m},37252:(e,t,n)=>{var r=n(95981),o=n(57475),s=/#|\.prototype\./,i=function(e,t){var n=l[a(e)];return n==u||n!=c&&(o(t)?r(t):!!t)},a=i.normalize=function(e){return String(e).replace(s,".").toLowerCase()},l=i.data={},c=i.NATIVE="N",u=i.POLYFILL="P";e.exports=i},54639:(e,t,n)=>{var r=n(10941),o=Math.floor;e.exports=Number.isInteger||function(e){return!r(e)&&isFinite(e)&&o(e)===e}},82119:e=>{e.exports=function(e){return null==e}},10941:(e,t,n)=>{var r=n(57475),o=n(76616),s=o.all;e.exports=o.IS_HTMLDDA?function(e){return"object"==typeof e?null!==e:r(e)||e===s}:function(e){return"object"==typeof e?null!==e:r(e)}},82529:e=>{e.exports=!0},60685:(e,t,n)=>{var r=n(10941),o=n(82532),s=n(99813)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[s])?!!t:"RegExp"==o(e))}},56664:(e,t,n)=>{var r=n(626),o=n(57475),s=n(7046),i=n(32302),a=Object;e.exports=i?function(e){return"symbol"==typeof e}:function(e){var t=r("Symbol");return o(t)&&s(t.prototype,a(e))}},93091:(e,t,n)=>{var r=n(86843),o=n(78834),s=n(96059),i=n(69826),a=n(6782),l=n(10623),c=n(7046),u=n(53476),p=n(22902),h=n(7609),f=TypeError,d=function(e,t){this.stopped=e,this.result=t},m=d.prototype;e.exports=function(e,t,n){var g,y,v,b,w,E,x,S=n&&n.that,_=!(!n||!n.AS_ENTRIES),j=!(!n||!n.IS_RECORD),O=!(!n||!n.IS_ITERATOR),k=!(!n||!n.INTERRUPTED),A=r(t,S),C=function(e){return g&&h(g,"normal",e),new d(!0,e)},P=function(e){return _?(s(e),k?A(e[0],e[1],C):A(e[0],e[1])):k?A(e,C):A(e)};if(j)g=e.iterator;else if(O)g=e;else{if(!(y=p(e)))throw f(i(e)+" is not iterable");if(a(y)){for(v=0,b=l(e);b>v;v++)if((w=P(e[v]))&&c(m,w))return w;return new d(!1)}g=u(e,y)}for(E=j?e.next:g.next;!(x=o(E,g)).done;){try{w=P(x.value)}catch(e){h(g,"throw",e)}if("object"==typeof w&&w&&c(m,w))return w}return new d(!1)}},7609:(e,t,n)=>{var r=n(78834),o=n(96059),s=n(14229);e.exports=function(e,t,n){var i,a;o(e);try{if(!(i=s(e,"return"))){if("throw"===t)throw n;return n}i=r(i,e)}catch(e){a=!0,i=e}if("throw"===t)throw n;if(a)throw i;return o(i),n}},53847:(e,t,n)=>{"use strict";var r=n(35143).IteratorPrototype,o=n(29290),s=n(31887),i=n(90904),a=n(12077),l=function(){return this};e.exports=function(e,t,n,c){var u=t+" Iterator";return e.prototype=o(r,{next:s(+!c,n)}),i(e,u,!1,!0),a[u]=l,e}},75105:(e,t,n)=>{"use strict";var r=n(76887),o=n(78834),s=n(82529),i=n(79417),a=n(57475),l=n(53847),c=n(249),u=n(88929),p=n(90904),h=n(32029),f=n(95929),d=n(99813),m=n(12077),g=n(35143),y=i.PROPER,v=i.CONFIGURABLE,b=g.IteratorPrototype,w=g.BUGGY_SAFARI_ITERATORS,E=d("iterator"),x="keys",S="values",_="entries",j=function(){return this};e.exports=function(e,t,n,i,d,g,O){l(n,t,i);var k,A,C,P=function(e){if(e===d&&M)return M;if(!w&&e in T)return T[e];switch(e){case x:case S:case _:return function(){return new n(this,e)}}return function(){return new n(this)}},N=t+" Iterator",I=!1,T=e.prototype,R=T[E]||T["@@iterator"]||d&&T[d],M=!w&&R||P(d),D="Array"==t&&T.entries||R;if(D&&(k=c(D.call(new e)))!==Object.prototype&&k.next&&(s||c(k)===b||(u?u(k,b):a(k[E])||f(k,E,j)),p(k,N,!0,!0),s&&(m[N]=j)),y&&d==S&&R&&R.name!==S&&(!s&&v?h(T,"name",S):(I=!0,M=function(){return o(R,this)})),d)if(A={values:P(S),keys:g?M:P(x),entries:P(_)},O)for(C in A)(w||I||!(C in T))&&f(T,C,A[C]);else r({target:t,proto:!0,forced:w||I},A);return s&&!O||T[E]===M||f(T,E,M,{name:d}),m[t]=M,A}},35143:(e,t,n)=>{"use strict";var r,o,s,i=n(95981),a=n(57475),l=n(10941),c=n(29290),u=n(249),p=n(95929),h=n(99813),f=n(82529),d=h("iterator"),m=!1;[].keys&&("next"in(s=[].keys())?(o=u(u(s)))!==Object.prototype&&(r=o):m=!0),!l(r)||i((function(){var e={};return r[d].call(e)!==e}))?r={}:f&&(r=c(r)),a(r[d])||p(r,d,(function(){return this})),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:m}},12077:e=>{e.exports={}},10623:(e,t,n)=>{var r=n(43057);e.exports=function(e){return r(e.length)}},35331:e=>{var t=Math.ceil,n=Math.floor;e.exports=Math.trunc||function(e){var r=+e;return(r>0?n:t)(r)}},66132:(e,t,n)=>{var r,o,s,i,a,l=n(21899),c=n(86843),u=n(49677).f,p=n(42941).set,h=n(18397),f=n(22749),d=n(4470),m=n(58045),g=n(6049),y=l.MutationObserver||l.WebKitMutationObserver,v=l.document,b=l.process,w=l.Promise,E=u(l,"queueMicrotask"),x=E&&E.value;if(!x){var S=new h,_=function(){var e,t;for(g&&(e=b.domain)&&e.exit();t=S.get();)try{t()}catch(e){throw S.head&&r(),e}e&&e.enter()};f||g||m||!y||!v?!d&&w&&w.resolve?((i=w.resolve(void 0)).constructor=w,a=c(i.then,i),r=function(){a(_)}):g?r=function(){b.nextTick(_)}:(p=c(p,l),r=function(){p(_)}):(o=!0,s=v.createTextNode(""),new y(_).observe(s,{characterData:!0}),r=function(){s.data=o=!o}),x=function(e){S.head||r(),S.add(e)}}e.exports=x},69520:(e,t,n)=>{"use strict";var r=n(24883),o=TypeError,s=function(e){var t,n;this.promise=new e((function(e,r){if(void 0!==t||void 0!==n)throw o("Bad Promise constructor");t=e,n=r})),this.resolve=r(t),this.reject=r(n)};e.exports.f=function(e){return new s(e)}},14649:(e,t,n)=>{var r=n(85803);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:r(e)}},70344:(e,t,n)=>{var r=n(60685),o=TypeError;e.exports=function(e){if(r(e))throw o("The method doesn't accept regular expressions");return e}},24420:(e,t,n)=>{"use strict";var r=n(55746),o=n(95329),s=n(78834),i=n(95981),a=n(14771),l=n(87857),c=n(36760),u=n(89678),p=n(37026),h=Object.assign,f=Object.defineProperty,d=o([].concat);e.exports=!h||i((function(){if(r&&1!==h({b:1},h(f({},"a",{enumerable:!0,get:function(){f(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),o="abcdefghijklmnopqrst";return e[n]=7,o.split("").forEach((function(e){t[e]=e})),7!=h({},e)[n]||a(h({},t)).join("")!=o}))?function(e,t){for(var n=u(e),o=arguments.length,i=1,h=l.f,f=c.f;o>i;)for(var m,g=p(arguments[i++]),y=h?d(a(g),h(g)):a(g),v=y.length,b=0;v>b;)m=y[b++],r&&!s(f,g,m)||(n[m]=g[m]);return n}:h},29290:(e,t,n)=>{var r,o=n(96059),s=n(59938),i=n(56759),a=n(27748),l=n(15463),c=n(61333),u=n(44262),p="prototype",h="script",f=u("IE_PROTO"),d=function(){},m=function(e){return"<"+h+">"+e+""},g=function(e){e.write(m("")),e.close();var t=e.parentWindow.Object;return e=null,t},y=function(){try{r=new ActiveXObject("htmlfile")}catch(e){}var e,t,n;y="undefined"!=typeof document?document.domain&&r?g(r):(t=c("iframe"),n="java"+h+":",t.style.display="none",l.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(m("document.F=Object")),e.close(),e.F):g(r);for(var o=i.length;o--;)delete y[p][i[o]];return y()};a[f]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(d[p]=o(e),n=new d,d[p]=null,n[f]=e):n=y(),void 0===t?n:s.f(n,t)}},59938:(e,t,n)=>{var r=n(55746),o=n(83937),s=n(65988),i=n(96059),a=n(74529),l=n(14771);t.f=r&&!o?Object.defineProperties:function(e,t){i(e);for(var n,r=a(t),o=l(t),c=o.length,u=0;c>u;)s.f(e,n=o[u++],r[n]);return e}},65988:(e,t,n)=>{var r=n(55746),o=n(2840),s=n(83937),i=n(96059),a=n(83894),l=TypeError,c=Object.defineProperty,u=Object.getOwnPropertyDescriptor,p="enumerable",h="configurable",f="writable";t.f=r?s?function(e,t,n){if(i(e),t=a(t),i(n),"function"==typeof e&&"prototype"===t&&"value"in n&&f in n&&!n[f]){var r=u(e,t);r&&r[f]&&(e[t]=n.value,n={configurable:h in n?n[h]:r[h],enumerable:p in n?n[p]:r[p],writable:!1})}return c(e,t,n)}:c:function(e,t,n){if(i(e),t=a(t),i(n),o)try{return c(e,t,n)}catch(e){}if("get"in n||"set"in n)throw l("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},49677:(e,t,n)=>{var r=n(55746),o=n(78834),s=n(36760),i=n(31887),a=n(74529),l=n(83894),c=n(90953),u=n(2840),p=Object.getOwnPropertyDescriptor;t.f=r?p:function(e,t){if(e=a(e),t=l(t),u)try{return p(e,t)}catch(e){}if(c(e,t))return i(!o(s.f,e,t),e[t])}},684:(e,t,n)=>{var r=n(82532),o=n(74529),s=n(10946).f,i=n(15790),a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return a&&"Window"==r(e)?function(e){try{return s(e)}catch(e){return i(a)}}(e):s(o(e))}},10946:(e,t,n)=>{var r=n(55629),o=n(56759).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,o)}},87857:(e,t)=>{t.f=Object.getOwnPropertySymbols},249:(e,t,n)=>{var r=n(90953),o=n(57475),s=n(89678),i=n(44262),a=n(64160),l=i("IE_PROTO"),c=Object,u=c.prototype;e.exports=a?c.getPrototypeOf:function(e){var t=s(e);if(r(t,l))return t[l];var n=t.constructor;return o(n)&&t instanceof n?n.prototype:t instanceof c?u:null}},91584:(e,t,n)=>{var r=n(95981),o=n(10941),s=n(82532),i=n(97135),a=Object.isExtensible,l=r((function(){a(1)}));e.exports=l||i?function(e){return!!o(e)&&((!i||"ArrayBuffer"!=s(e))&&(!a||a(e)))}:a},7046:(e,t,n)=>{var r=n(95329);e.exports=r({}.isPrototypeOf)},55629:(e,t,n)=>{var r=n(95329),o=n(90953),s=n(74529),i=n(31692).indexOf,a=n(27748),l=r([].push);e.exports=function(e,t){var n,r=s(e),c=0,u=[];for(n in r)!o(a,n)&&o(r,n)&&l(u,n);for(;t.length>c;)o(r,n=t[c++])&&(~i(u,n)||l(u,n));return u}},14771:(e,t,n)=>{var r=n(55629),o=n(56759);e.exports=Object.keys||function(e){return r(e,o)}},36760:(e,t)=>{"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,o=r&&!n.call({1:2},1);t.f=o?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},88929:(e,t,n)=>{var r=n(45526),o=n(96059),s=n(11851);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=r(Object.prototype,"__proto__","set"))(n,[]),t=n instanceof Array}catch(e){}return function(n,r){return o(n),s(r),t?e(n,r):n.__proto__=r,n}}():void 0)},88810:(e,t,n)=>{var r=n(55746),o=n(95981),s=n(95329),i=n(249),a=n(14771),l=n(74529),c=s(n(36760).f),u=s([].push),p=r&&o((function(){var e=Object.create(null);return e[2]=2,!c(e,2)})),h=function(e){return function(t){for(var n,o=l(t),s=a(o),h=p&&null===i(o),f=s.length,d=0,m=[];f>d;)n=s[d++],r&&!(h?n in o:c(o,n))||u(m,e?[n,o[n]]:o[n]);return m}};e.exports={entries:h(!0),values:h(!1)}},95623:(e,t,n)=>{"use strict";var r=n(22885),o=n(9697);e.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},39811:(e,t,n)=>{var r=n(78834),o=n(57475),s=n(10941),i=TypeError;e.exports=function(e,t){var n,a;if("string"===t&&o(n=e.toString)&&!s(a=r(n,e)))return a;if(o(n=e.valueOf)&&!s(a=r(n,e)))return a;if("string"!==t&&o(n=e.toString)&&!s(a=r(n,e)))return a;throw i("Can't convert object to primitive value")}},31136:(e,t,n)=>{var r=n(626),o=n(95329),s=n(10946),i=n(87857),a=n(96059),l=o([].concat);e.exports=r("Reflect","ownKeys")||function(e){var t=s.f(a(e)),n=i.f;return n?l(t,n(e)):t}},54058:e=>{e.exports={}},40002:e=>{e.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}},67742:(e,t,n)=>{var r=n(21899),o=n(6991),s=n(57475),i=n(37252),a=n(81302),l=n(99813),c=n(23321),u=n(48501),p=n(82529),h=n(53385),f=o&&o.prototype,d=l("species"),m=!1,g=s(r.PromiseRejectionEvent),y=i("Promise",(function(){var e=a(o),t=e!==String(o);if(!t&&66===h)return!0;if(p&&(!f.catch||!f.finally))return!0;if(!h||h<51||!/native code/.test(e)){var n=new o((function(e){e(1)})),r=function(e){e((function(){}),(function(){}))};if((n.constructor={})[d]=r,!(m=n.then((function(){}))instanceof r))return!0}return!t&&(c||u)&&!g}));e.exports={CONSTRUCTOR:y,REJECTION_EVENT:g,SUBCLASSING:m}},6991:(e,t,n)=>{var r=n(21899);e.exports=r.Promise},56584:(e,t,n)=>{var r=n(96059),o=n(10941),s=n(69520);e.exports=function(e,t){if(r(e),o(t)&&t.constructor===e)return t;var n=s.f(e);return(0,n.resolve)(t),n.promise}},31542:(e,t,n)=>{var r=n(6991),o=n(21385),s=n(67742).CONSTRUCTOR;e.exports=s||!o((function(e){r.all(e).then(void 0,(function(){}))}))},18397:e=>{var t=function(){this.head=null,this.tail=null};t.prototype={add:function(e){var t={item:e,next:null},n=this.tail;n?n.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return null===(this.head=e.next)&&(this.tail=null),e.item}},e.exports=t},48219:(e,t,n)=>{var r=n(82119),o=TypeError;e.exports=function(e){if(r(e))throw o("Can't call method on "+e);return e}},37620:(e,t,n)=>{"use strict";var r,o=n(21899),s=n(79730),i=n(57475),a=n(56491),l=n(2861),c=n(93765),u=n(18348),p=o.Function,h=/MSIE .\./.test(l)||a&&((r=o.Bun.version.split(".")).length<3||0==r[0]&&(r[1]<3||3==r[1]&&0==r[2]));e.exports=function(e,t){var n=t?2:1;return h?function(r,o){var a=u(arguments.length,1)>n,l=i(r)?r:p(r),h=a?c(arguments,n):[],f=a?function(){s(l,this,h)}:l;return t?e(f,o):e(f)}:e}},94431:(e,t,n)=>{"use strict";var r=n(626),o=n(29202),s=n(99813),i=n(55746),a=s("species");e.exports=function(e){var t=r(e);i&&t&&!t[a]&&o(t,a,{configurable:!0,get:function(){return this}})}},90904:(e,t,n)=>{var r=n(22885),o=n(65988).f,s=n(32029),i=n(90953),a=n(95623),l=n(99813)("toStringTag");e.exports=function(e,t,n,c){if(e){var u=n?e:e.prototype;i(u,l)||o(u,l,{configurable:!0,value:t}),c&&!r&&s(u,"toString",a)}}},44262:(e,t,n)=>{var r=n(68726),o=n(99418),s=r("keys");e.exports=function(e){return s[e]||(s[e]=o(e))}},63030:(e,t,n)=>{var r=n(21899),o=n(75609),s="__core-js_shared__",i=r[s]||o(s,{});e.exports=i},68726:(e,t,n)=>{var r=n(82529),o=n(63030);(e.exports=function(e,t){return o[e]||(o[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.31.0",mode:r?"pure":"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.31.0/LICENSE",source:"https://github.com/zloirock/core-js"})},70487:(e,t,n)=>{var r=n(96059),o=n(174),s=n(82119),i=n(99813)("species");e.exports=function(e,t){var n,a=r(e).constructor;return void 0===a||s(n=r(a)[i])?t:o(n)}},64620:(e,t,n)=>{var r=n(95329),o=n(62435),s=n(85803),i=n(48219),a=r("".charAt),l=r("".charCodeAt),c=r("".slice),u=function(e){return function(t,n){var r,u,p=s(i(t)),h=o(n),f=p.length;return h<0||h>=f?e?"":void 0:(r=l(p,h))<55296||r>56319||h+1===f||(u=l(p,h+1))<56320||u>57343?e?a(p,h):r:e?c(p,h,h+2):u-56320+(r-55296<<10)+65536}};e.exports={codeAt:u(!1),charAt:u(!0)}},73291:(e,t,n)=>{var r=n(95329),o=2147483647,s=/[^\0-\u007E]/,i=/[.\u3002\uFF0E\uFF61]/g,a="Overflow: input needs wider integers to process",l=RangeError,c=r(i.exec),u=Math.floor,p=String.fromCharCode,h=r("".charCodeAt),f=r([].join),d=r([].push),m=r("".replace),g=r("".split),y=r("".toLowerCase),v=function(e){return e+22+75*(e<26)},b=function(e,t,n){var r=0;for(e=n?u(e/700):e>>1,e+=u(e/t);e>455;)e=u(e/35),r+=36;return u(r+36*e/(e+38))},w=function(e){var t=[];e=function(e){for(var t=[],n=0,r=e.length;n=55296&&o<=56319&&n=i&&ru((o-c)/E))throw l(a);for(c+=(w-i)*E,i=w,n=0;no)throw l(a);if(r==i){for(var x=c,S=36;;){var _=S<=m?1:S>=m+26?26:S-m;if(x<_)break;var j=x-_,O=36-_;d(t,p(v(_+j%O))),x=u(j/O),S+=36}d(t,p(v(x))),m=b(c,E,y==g),c=0,y++}}c++,i++}return f(t,"")};e.exports=function(e){var t,n,r=[],o=g(m(y(e),i,"."),".");for(t=0;t{"use strict";var r=n(62435),o=n(85803),s=n(48219),i=RangeError;e.exports=function(e){var t=o(s(this)),n="",a=r(e);if(a<0||a==1/0)throw i("Wrong number of repetitions");for(;a>0;(a>>>=1)&&(t+=t))1&a&&(n+=t);return n}},93093:(e,t,n)=>{var r=n(79417).PROPER,o=n(95981),s=n(73483);e.exports=function(e){return o((function(){return!!s[e]()||"​…᠎"!=="​…᠎"[e]()||r&&s[e].name!==e}))}},74853:(e,t,n)=>{var r=n(95329),o=n(48219),s=n(85803),i=n(73483),a=r("".replace),l=RegExp("^["+i+"]+"),c=RegExp("(^|[^"+i+"])["+i+"]+$"),u=function(e){return function(t){var n=s(o(t));return 1&e&&(n=a(n,l,"")),2&e&&(n=a(n,c,"$1")),n}};e.exports={start:u(1),end:u(2),trim:u(3)}},63405:(e,t,n)=>{var r=n(53385),o=n(95981),s=n(21899).String;e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol();return!s(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},29630:(e,t,n)=>{var r=n(78834),o=n(626),s=n(99813),i=n(95929);e.exports=function(){var e=o("Symbol"),t=e&&e.prototype,n=t&&t.valueOf,a=s("toPrimitive");t&&!t[a]&&i(t,a,(function(e){return r(n,this)}),{arity:1})}},32087:(e,t,n)=>{var r=n(626),o=n(95329),s=r("Symbol"),i=s.keyFor,a=o(s.prototype.valueOf);e.exports=s.isRegisteredSymbol||function(e){try{return void 0!==i(a(e))}catch(e){return!1}}},96559:(e,t,n)=>{for(var r=n(68726),o=n(626),s=n(95329),i=n(56664),a=n(99813),l=o("Symbol"),c=l.isWellKnownSymbol,u=o("Object","getOwnPropertyNames"),p=s(l.prototype.valueOf),h=r("wks"),f=0,d=u(l),m=d.length;f{var r=n(63405);e.exports=r&&!!Symbol.for&&!!Symbol.keyFor},42941:(e,t,n)=>{var r,o,s,i,a=n(21899),l=n(79730),c=n(86843),u=n(57475),p=n(90953),h=n(95981),f=n(15463),d=n(93765),m=n(61333),g=n(18348),y=n(22749),v=n(6049),b=a.setImmediate,w=a.clearImmediate,E=a.process,x=a.Dispatch,S=a.Function,_=a.MessageChannel,j=a.String,O=0,k={},A="onreadystatechange";h((function(){r=a.location}));var C=function(e){if(p(k,e)){var t=k[e];delete k[e],t()}},P=function(e){return function(){C(e)}},N=function(e){C(e.data)},I=function(e){a.postMessage(j(e),r.protocol+"//"+r.host)};b&&w||(b=function(e){g(arguments.length,1);var t=u(e)?e:S(e),n=d(arguments,1);return k[++O]=function(){l(t,void 0,n)},o(O),O},w=function(e){delete k[e]},v?o=function(e){E.nextTick(P(e))}:x&&x.now?o=function(e){x.now(P(e))}:_&&!y?(i=(s=new _).port2,s.port1.onmessage=N,o=c(i.postMessage,i)):a.addEventListener&&u(a.postMessage)&&!a.importScripts&&r&&"file:"!==r.protocol&&!h(I)?(o=I,a.addEventListener("message",N,!1)):o=A in m("script")?function(e){f.appendChild(m("script"))[A]=function(){f.removeChild(this),C(e)}}:function(e){setTimeout(P(e),0)}),e.exports={set:b,clear:w}},59413:(e,t,n)=>{var r=n(62435),o=Math.max,s=Math.min;e.exports=function(e,t){var n=r(e);return n<0?o(n+t,0):s(n,t)}},74529:(e,t,n)=>{var r=n(37026),o=n(48219);e.exports=function(e){return r(o(e))}},62435:(e,t,n)=>{var r=n(35331);e.exports=function(e){var t=+e;return t!=t||0===t?0:r(t)}},43057:(e,t,n)=>{var r=n(62435),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},89678:(e,t,n)=>{var r=n(48219),o=Object;e.exports=function(e){return o(r(e))}},46935:(e,t,n)=>{var r=n(78834),o=n(10941),s=n(56664),i=n(14229),a=n(39811),l=n(99813),c=TypeError,u=l("toPrimitive");e.exports=function(e,t){if(!o(e)||s(e))return e;var n,l=i(e,u);if(l){if(void 0===t&&(t="default"),n=r(l,e,t),!o(n)||s(n))return n;throw c("Can't convert object to primitive value")}return void 0===t&&(t="number"),a(e,t)}},83894:(e,t,n)=>{var r=n(46935),o=n(56664);e.exports=function(e){var t=r(e,"string");return o(t)?t:t+""}},22885:(e,t,n)=>{var r={};r[n(99813)("toStringTag")]="z",e.exports="[object z]"===String(r)},85803:(e,t,n)=>{var r=n(9697),o=String;e.exports=function(e){if("Symbol"===r(e))throw TypeError("Cannot convert a Symbol value to a string");return o(e)}},69826:e=>{var t=String;e.exports=function(e){try{return t(e)}catch(e){return"Object"}}},99418:(e,t,n)=>{var r=n(95329),o=0,s=Math.random(),i=r(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+i(++o+s,36)}},14766:(e,t,n)=>{var r=n(95981),o=n(99813),s=n(55746),i=n(82529),a=o("iterator");e.exports=!r((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n=new URLSearchParams("a=1&a=2"),r="";return e.pathname="c%20d",t.forEach((function(e,n){t.delete("b"),r+=n+e})),n.delete("a",2),i&&(!e.toJSON||!n.has("a",1)||n.has("a",2))||!t.size&&(i||!s)||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[a]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==r||"x"!==new URL("http://x",void 0).host}))},32302:(e,t,n)=>{var r=n(63405);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},83937:(e,t,n)=>{var r=n(55746),o=n(95981);e.exports=r&&o((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},18348:e=>{var t=TypeError;e.exports=function(e,n){if(e{var r=n(21899),o=n(57475),s=r.WeakMap;e.exports=o(s)&&/native code/.test(String(s))},73464:(e,t,n)=>{var r=n(54058),o=n(90953),s=n(11477),i=n(65988).f;e.exports=function(e){var t=r.Symbol||(r.Symbol={});o(t,e)||i(t,e,{value:s.f(e)})}},11477:(e,t,n)=>{var r=n(99813);t.f=r},99813:(e,t,n)=>{var r=n(21899),o=n(68726),s=n(90953),i=n(99418),a=n(63405),l=n(32302),c=r.Symbol,u=o("wks"),p=l?c.for||c:c&&c.withoutSetter||i;e.exports=function(e){return s(u,e)||(u[e]=a&&s(c,e)?c[e]:p("Symbol."+e)),u[e]}},73483:e=>{e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},49812:(e,t,n)=>{"use strict";var r=n(76887),o=n(7046),s=n(249),i=n(88929),a=n(23489),l=n(29290),c=n(32029),u=n(31887),p=n(53794),h=n(79585),f=n(93091),d=n(14649),m=n(99813)("toStringTag"),g=Error,y=[].push,v=function(e,t){var n,r=o(b,this);i?n=i(g(),r?s(this):b):(n=r?this:l(b),c(n,m,"Error")),void 0!==t&&c(n,"message",d(t)),h(n,v,n.stack,1),arguments.length>2&&p(n,arguments[2]);var a=[];return f(e,y,{that:a}),c(n,"errors",a),n};i?i(v,g):a(v,g,{name:!0});var b=v.prototype=l(g.prototype,{constructor:u(1,v),message:u(1,""),name:u(1,"AggregateError")});r({global:!0,constructor:!0,arity:2},{AggregateError:v})},47627:(e,t,n)=>{n(49812)},85906:(e,t,n)=>{"use strict";var r=n(76887),o=n(95981),s=n(1052),i=n(10941),a=n(89678),l=n(10623),c=n(66796),u=n(55449),p=n(64692),h=n(50568),f=n(99813),d=n(53385),m=f("isConcatSpreadable"),g=d>=51||!o((function(){var e=[];return e[m]=!1,e.concat()[0]!==e})),y=function(e){if(!i(e))return!1;var t=e[m];return void 0!==t?!!t:s(e)};r({target:"Array",proto:!0,arity:1,forced:!g||!h("concat")},{concat:function(e){var t,n,r,o,s,i=a(this),h=p(i,0),f=0;for(t=-1,r=arguments.length;t{"use strict";var r=n(76887),o=n(3610).every;r({target:"Array",proto:!0,forced:!n(34194)("every")},{every:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}})},80290:(e,t,n)=>{var r=n(76887),o=n(91860),s=n(18479);r({target:"Array",proto:!0},{fill:o}),s("fill")},21501:(e,t,n)=>{"use strict";var r=n(76887),o=n(3610).filter;r({target:"Array",proto:!0,forced:!n(50568)("filter")},{filter:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}})},44929:(e,t,n)=>{"use strict";var r=n(76887),o=n(3610).findIndex,s=n(18479),i="findIndex",a=!0;i in[]&&Array(1)[i]((function(){a=!1})),r({target:"Array",proto:!0,forced:a},{findIndex:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),s(i)},80833:(e,t,n)=>{"use strict";var r=n(76887),o=n(3610).find,s=n(18479),i="find",a=!0;i in[]&&Array(1)[i]((function(){a=!1})),r({target:"Array",proto:!0,forced:a},{find:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),s(i)},2437:(e,t,n)=>{"use strict";var r=n(76887),o=n(56837);r({target:"Array",proto:!0,forced:[].forEach!=o},{forEach:o})},53242:(e,t,n)=>{var r=n(76887),o=n(11354);r({target:"Array",stat:!0,forced:!n(21385)((function(e){Array.from(e)}))},{from:o})},97690:(e,t,n)=>{"use strict";var r=n(76887),o=n(31692).includes,s=n(95981),i=n(18479);r({target:"Array",proto:!0,forced:s((function(){return!Array(1).includes()}))},{includes:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),i("includes")},99076:(e,t,n)=>{"use strict";var r=n(76887),o=n(97484),s=n(31692).indexOf,i=n(34194),a=o([].indexOf),l=!!a&&1/a([1],1,-0)<0;r({target:"Array",proto:!0,forced:l||!i("indexOf")},{indexOf:function(e){var t=arguments.length>1?arguments[1]:void 0;return l?a(this,e,t)||0:s(this,e,t)}})},92737:(e,t,n)=>{n(76887)({target:"Array",stat:!0},{isArray:n(1052)})},66274:(e,t,n)=>{"use strict";var r=n(74529),o=n(18479),s=n(12077),i=n(45402),a=n(65988).f,l=n(75105),c=n(23538),u=n(82529),p=n(55746),h="Array Iterator",f=i.set,d=i.getterFor(h);e.exports=l(Array,"Array",(function(e,t){f(this,{type:h,target:r(e),index:0,kind:t})}),(function(){var e=d(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,c(void 0,!0)):c("keys"==n?r:"values"==n?t[r]:[r,t[r]],!1)}),"values");var m=s.Arguments=s.Array;if(o("keys"),o("values"),o("entries"),!u&&p&&"values"!==m.name)try{a(m,"name",{value:"values"})}catch(e){}},75915:(e,t,n)=>{var r=n(76887),o=n(67145);r({target:"Array",proto:!0,forced:o!==[].lastIndexOf},{lastIndexOf:o})},68787:(e,t,n)=>{"use strict";var r=n(76887),o=n(3610).map;r({target:"Array",proto:!0,forced:!n(50568)("map")},{map:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}})},48528:(e,t,n)=>{"use strict";var r=n(76887),o=n(89678),s=n(10623),i=n(89779),a=n(66796);r({target:"Array",proto:!0,arity:1,forced:n(95981)((function(){return 4294967297!==[].push.call({length:4294967296},1)}))||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(e){return e instanceof TypeError}}()},{push:function(e){var t=o(this),n=s(t),r=arguments.length;a(n+r);for(var l=0;l{"use strict";var r=n(76887),o=n(46499).left,s=n(34194),i=n(53385);r({target:"Array",proto:!0,forced:!n(6049)&&i>79&&i<83||!s("reduce")},{reduce:function(e){var t=arguments.length;return o(this,e,t,t>1?arguments[1]:void 0)}})},60186:(e,t,n)=>{"use strict";var r=n(76887),o=n(1052),s=n(24284),i=n(10941),a=n(59413),l=n(10623),c=n(74529),u=n(55449),p=n(99813),h=n(50568),f=n(93765),d=h("slice"),m=p("species"),g=Array,y=Math.max;r({target:"Array",proto:!0,forced:!d},{slice:function(e,t){var n,r,p,h=c(this),d=l(h),v=a(e,d),b=a(void 0===t?d:t,d);if(o(h)&&(n=h.constructor,(s(n)&&(n===g||o(n.prototype))||i(n)&&null===(n=n[m]))&&(n=void 0),n===g||void 0===n))return f(h,v,b);for(r=new(void 0===n?g:n)(y(b-v,0)),p=0;v{"use strict";var r=n(76887),o=n(3610).some;r({target:"Array",proto:!0,forced:!n(34194)("some")},{some:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}})},4115:(e,t,n)=>{"use strict";var r=n(76887),o=n(95329),s=n(24883),i=n(89678),a=n(10623),l=n(15863),c=n(85803),u=n(95981),p=n(61388),h=n(34194),f=n(34342),d=n(81046),m=n(53385),g=n(18938),y=[],v=o(y.sort),b=o(y.push),w=u((function(){y.sort(void 0)})),E=u((function(){y.sort(null)})),x=h("sort"),S=!u((function(){if(m)return m<70;if(!(f&&f>3)){if(d)return!0;if(g)return g<603;var e,t,n,r,o="";for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(r=0;r<47;r++)y.push({k:t+r,v:n})}for(y.sort((function(e,t){return t.v-e.v})),r=0;rc(n)?1:-1}}(e)),n=a(o),r=0;r{"use strict";var r=n(76887),o=n(89678),s=n(59413),i=n(62435),a=n(10623),l=n(89779),c=n(66796),u=n(64692),p=n(55449),h=n(15863),f=n(50568)("splice"),d=Math.max,m=Math.min;r({target:"Array",proto:!0,forced:!f},{splice:function(e,t){var n,r,f,g,y,v,b=o(this),w=a(b),E=s(e,w),x=arguments.length;for(0===x?n=r=0:1===x?(n=0,r=w-E):(n=x-2,r=m(d(i(t),0),w-E)),c(w+n-r),f=u(b,r),g=0;gw-r+n;g--)h(b,g-1)}else if(n>r)for(g=w-r;g>E;g--)v=g+n-1,(y=g+r-1)in b?b[v]=b[y]:h(b,v);for(g=0;g{var r=n(76887),o=n(95329),s=Date,i=o(s.prototype.getTime);r({target:"Date",stat:!0},{now:function(){return i(new s)}})},18084:()=>{},73381:(e,t,n)=>{var r=n(76887),o=n(98308);r({target:"Function",proto:!0,forced:Function.bind!==o},{bind:o})},32619:(e,t,n)=>{var r=n(76887),o=n(626),s=n(79730),i=n(78834),a=n(95329),l=n(95981),c=n(57475),u=n(56664),p=n(93765),h=n(33323),f=n(63405),d=String,m=o("JSON","stringify"),g=a(/./.exec),y=a("".charAt),v=a("".charCodeAt),b=a("".replace),w=a(1..toString),E=/[\uD800-\uDFFF]/g,x=/^[\uD800-\uDBFF]$/,S=/^[\uDC00-\uDFFF]$/,_=!f||l((function(){var e=o("Symbol")();return"[null]"!=m([e])||"{}"!=m({a:e})||"{}"!=m(Object(e))})),j=l((function(){return'"\\udf06\\ud834"'!==m("\udf06\ud834")||'"\\udead"'!==m("\udead")})),O=function(e,t){var n=p(arguments),r=h(t);if(c(r)||void 0!==e&&!u(e))return n[1]=function(e,t){if(c(r)&&(t=i(r,this,d(e),t)),!u(t))return t},s(m,null,n)},k=function(e,t,n){var r=y(n,t-1),o=y(n,t+1);return g(x,e)&&!g(S,o)||g(S,e)&&!g(x,r)?"\\u"+w(v(e,0),16):e};m&&r({target:"JSON",stat:!0,arity:3,forced:_||j},{stringify:function(e,t,n){var r=p(arguments),o=s(_?O:m,null,r);return j&&"string"==typeof o?b(o,E,k):o}})},69120:(e,t,n)=>{var r=n(21899);n(90904)(r.JSON,"JSON",!0)},23112:(e,t,n)=>{"use strict";n(24683)("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),n(85616))},37501:(e,t,n)=>{n(23112)},79413:()=>{},54973:(e,t,n)=>{n(76887)({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{EPSILON:Math.pow(2,-52)})},30800:(e,t,n)=>{n(76887)({target:"Number",stat:!0},{isInteger:n(54639)})},49221:(e,t,n)=>{var r=n(76887),o=n(24420);r({target:"Object",stat:!0,arity:2,forced:Object.assign!==o},{assign:o})},74979:(e,t,n)=>{var r=n(76887),o=n(55746),s=n(59938).f;r({target:"Object",stat:!0,forced:Object.defineProperties!==s,sham:!o},{defineProperties:s})},86450:(e,t,n)=>{var r=n(76887),o=n(55746),s=n(65988).f;r({target:"Object",stat:!0,forced:Object.defineProperty!==s,sham:!o},{defineProperty:s})},94366:(e,t,n)=>{var r=n(76887),o=n(88810).entries;r({target:"Object",stat:!0},{entries:function(e){return o(e)}})},28387:(e,t,n)=>{var r=n(76887),o=n(93091),s=n(55449);r({target:"Object",stat:!0},{fromEntries:function(e){var t={};return o(e,(function(e,n){s(t,e,n)}),{AS_ENTRIES:!0}),t}})},46924:(e,t,n)=>{var r=n(76887),o=n(95981),s=n(74529),i=n(49677).f,a=n(55746);r({target:"Object",stat:!0,forced:!a||o((function(){i(1)})),sham:!a},{getOwnPropertyDescriptor:function(e,t){return i(s(e),t)}})},88482:(e,t,n)=>{var r=n(76887),o=n(55746),s=n(31136),i=n(74529),a=n(49677),l=n(55449);r({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(e){for(var t,n,r=i(e),o=a.f,c=s(r),u={},p=0;c.length>p;)void 0!==(n=o(r,t=c[p++]))&&l(u,t,n);return u}})},37144:(e,t,n)=>{var r=n(76887),o=n(63405),s=n(95981),i=n(87857),a=n(89678);r({target:"Object",stat:!0,forced:!o||s((function(){i.f(1)}))},{getOwnPropertySymbols:function(e){var t=i.f;return t?t(a(e)):[]}})},21724:(e,t,n)=>{var r=n(76887),o=n(89678),s=n(14771);r({target:"Object",stat:!0,forced:n(95981)((function(){s(1)}))},{keys:function(e){return s(o(e))}})},55967:()=>{},26614:(e,t,n)=>{var r=n(76887),o=n(88810).values;r({target:"Object",stat:!0},{values:function(e){return o(e)}})},4560:(e,t,n)=>{"use strict";var r=n(76887),o=n(78834),s=n(24883),i=n(69520),a=n(40002),l=n(93091);r({target:"Promise",stat:!0,forced:n(31542)},{allSettled:function(e){var t=this,n=i.f(t),r=n.resolve,c=n.reject,u=a((function(){var n=s(t.resolve),i=[],a=0,c=1;l(e,(function(e){var s=a++,l=!1;c++,o(n,t,e).then((function(e){l||(l=!0,i[s]={status:"fulfilled",value:e},--c||r(i))}),(function(e){l||(l=!0,i[s]={status:"rejected",reason:e},--c||r(i))}))})),--c||r(i)}));return u.error&&c(u.value),n.promise}})},16890:(e,t,n)=>{"use strict";var r=n(76887),o=n(78834),s=n(24883),i=n(69520),a=n(40002),l=n(93091);r({target:"Promise",stat:!0,forced:n(31542)},{all:function(e){var t=this,n=i.f(t),r=n.resolve,c=n.reject,u=a((function(){var n=s(t.resolve),i=[],a=0,u=1;l(e,(function(e){var s=a++,l=!1;u++,o(n,t,e).then((function(e){l||(l=!0,i[s]=e,--u||r(i))}),c)})),--u||r(i)}));return u.error&&c(u.value),n.promise}})},91302:(e,t,n)=>{"use strict";var r=n(76887),o=n(78834),s=n(24883),i=n(626),a=n(69520),l=n(40002),c=n(93091),u=n(31542),p="No one promise resolved";r({target:"Promise",stat:!0,forced:u},{any:function(e){var t=this,n=i("AggregateError"),r=a.f(t),u=r.resolve,h=r.reject,f=l((function(){var r=s(t.resolve),i=[],a=0,l=1,f=!1;c(e,(function(e){var s=a++,c=!1;l++,o(r,t,e).then((function(e){c||f||(f=!0,u(e))}),(function(e){c||f||(c=!0,i[s]=e,--l||h(new n(i,p)))}))})),--l||h(new n(i,p))}));return f.error&&h(f.value),r.promise}})},83376:(e,t,n)=>{"use strict";var r=n(76887),o=n(82529),s=n(67742).CONSTRUCTOR,i=n(6991),a=n(626),l=n(57475),c=n(95929),u=i&&i.prototype;if(r({target:"Promise",proto:!0,forced:s,real:!0},{catch:function(e){return this.then(void 0,e)}}),!o&&l(i)){var p=a("Promise").prototype.catch;u.catch!==p&&c(u,"catch",p,{unsafe:!0})}},26934:(e,t,n)=>{"use strict";var r,o,s,i=n(76887),a=n(82529),l=n(6049),c=n(21899),u=n(78834),p=n(95929),h=n(88929),f=n(90904),d=n(94431),m=n(24883),g=n(57475),y=n(10941),v=n(5743),b=n(70487),w=n(42941).set,E=n(66132),x=n(34845),S=n(40002),_=n(18397),j=n(45402),O=n(6991),k=n(67742),A=n(69520),C="Promise",P=k.CONSTRUCTOR,N=k.REJECTION_EVENT,I=k.SUBCLASSING,T=j.getterFor(C),R=j.set,M=O&&O.prototype,D=O,F=M,L=c.TypeError,B=c.document,$=c.process,q=A.f,U=q,z=!!(B&&B.createEvent&&c.dispatchEvent),V="unhandledrejection",W=function(e){var t;return!(!y(e)||!g(t=e.then))&&t},J=function(e,t){var n,r,o,s=t.value,i=1==t.state,a=i?e.ok:e.fail,l=e.resolve,c=e.reject,p=e.domain;try{a?(i||(2===t.rejection&&Y(t),t.rejection=1),!0===a?n=s:(p&&p.enter(),n=a(s),p&&(p.exit(),o=!0)),n===e.promise?c(L("Promise-chain cycle")):(r=W(n))?u(r,n,l,c):l(n)):c(s)}catch(e){p&&!o&&p.exit(),c(e)}},K=function(e,t){e.notified||(e.notified=!0,E((function(){for(var n,r=e.reactions;n=r.get();)J(n,e);e.notified=!1,t&&!e.rejection&&G(e)})))},H=function(e,t,n){var r,o;z?((r=B.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),c.dispatchEvent(r)):r={promise:t,reason:n},!N&&(o=c["on"+e])?o(r):e===V&&x("Unhandled promise rejection",n)},G=function(e){u(w,c,(function(){var t,n=e.facade,r=e.value;if(Z(e)&&(t=S((function(){l?$.emit("unhandledRejection",r,n):H(V,n,r)})),e.rejection=l||Z(e)?2:1,t.error))throw t.value}))},Z=function(e){return 1!==e.rejection&&!e.parent},Y=function(e){u(w,c,(function(){var t=e.facade;l?$.emit("rejectionHandled",t):H("rejectionhandled",t,e.value)}))},X=function(e,t,n){return function(r){e(t,r,n)}},Q=function(e,t,n){e.done||(e.done=!0,n&&(e=n),e.value=t,e.state=2,K(e,!0))},ee=function(e,t,n){if(!e.done){e.done=!0,n&&(e=n);try{if(e.facade===t)throw L("Promise can't be resolved itself");var r=W(t);r?E((function(){var n={done:!1};try{u(r,t,X(ee,n,e),X(Q,n,e))}catch(t){Q(n,t,e)}})):(e.value=t,e.state=1,K(e,!1))}catch(t){Q({done:!1},t,e)}}};if(P&&(F=(D=function(e){v(this,F),m(e),u(r,this);var t=T(this);try{e(X(ee,t),X(Q,t))}catch(e){Q(t,e)}}).prototype,(r=function(e){R(this,{type:C,done:!1,notified:!1,parent:!1,reactions:new _,rejection:!1,state:0,value:void 0})}).prototype=p(F,"then",(function(e,t){var n=T(this),r=q(b(this,D));return n.parent=!0,r.ok=!g(e)||e,r.fail=g(t)&&t,r.domain=l?$.domain:void 0,0==n.state?n.reactions.add(r):E((function(){J(r,n)})),r.promise})),o=function(){var e=new r,t=T(e);this.promise=e,this.resolve=X(ee,t),this.reject=X(Q,t)},A.f=q=function(e){return e===D||undefined===e?new o(e):U(e)},!a&&g(O)&&M!==Object.prototype)){s=M.then,I||p(M,"then",(function(e,t){var n=this;return new D((function(e,t){u(s,n,e,t)})).then(e,t)}),{unsafe:!0});try{delete M.constructor}catch(e){}h&&h(M,F)}i({global:!0,constructor:!0,wrap:!0,forced:P},{Promise:D}),f(D,C,!1,!0),d(C)},44349:(e,t,n)=>{"use strict";var r=n(76887),o=n(82529),s=n(6991),i=n(95981),a=n(626),l=n(57475),c=n(70487),u=n(56584),p=n(95929),h=s&&s.prototype;if(r({target:"Promise",proto:!0,real:!0,forced:!!s&&i((function(){h.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=c(this,a("Promise")),n=l(e);return this.then(n?function(n){return u(t,e()).then((function(){return n}))}:e,n?function(n){return u(t,e()).then((function(){throw n}))}:e)}}),!o&&l(s)){var f=a("Promise").prototype.finally;h.finally!==f&&p(h,"finally",f,{unsafe:!0})}},98881:(e,t,n)=>{n(26934),n(16890),n(83376),n(55921),n(64069),n(14482)},55921:(e,t,n)=>{"use strict";var r=n(76887),o=n(78834),s=n(24883),i=n(69520),a=n(40002),l=n(93091);r({target:"Promise",stat:!0,forced:n(31542)},{race:function(e){var t=this,n=i.f(t),r=n.reject,c=a((function(){var i=s(t.resolve);l(e,(function(e){o(i,t,e).then(n.resolve,r)}))}));return c.error&&r(c.value),n.promise}})},64069:(e,t,n)=>{"use strict";var r=n(76887),o=n(78834),s=n(69520);r({target:"Promise",stat:!0,forced:n(67742).CONSTRUCTOR},{reject:function(e){var t=s.f(this);return o(t.reject,void 0,e),t.promise}})},14482:(e,t,n)=>{"use strict";var r=n(76887),o=n(626),s=n(82529),i=n(6991),a=n(67742).CONSTRUCTOR,l=n(56584),c=o("Promise"),u=s&&!a;r({target:"Promise",stat:!0,forced:s||a},{resolve:function(e){return l(u&&this===c?i:this,e)}})},1502:()=>{},82266:(e,t,n)=>{"use strict";n(24683)("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),n(85616))},69008:(e,t,n)=>{n(82266)},11035:(e,t,n)=>{"use strict";var r=n(76887),o=n(95329),s=n(70344),i=n(48219),a=n(85803),l=n(67772),c=o("".indexOf);r({target:"String",proto:!0,forced:!l("includes")},{includes:function(e){return!!~c(a(i(this)),a(s(e)),arguments.length>1?arguments[1]:void 0)}})},77971:(e,t,n)=>{"use strict";var r=n(64620).charAt,o=n(85803),s=n(45402),i=n(75105),a=n(23538),l="String Iterator",c=s.set,u=s.getterFor(l);i(String,"String",(function(e){c(this,{type:l,string:o(e),index:0})}),(function(){var e,t=u(this),n=t.string,o=t.index;return o>=n.length?a(void 0,!0):(e=r(n,o),t.index+=e.length,a(e,!1))}))},74679:(e,t,n)=>{var r=n(76887),o=n(95329),s=n(74529),i=n(89678),a=n(85803),l=n(10623),c=o([].push),u=o([].join);r({target:"String",stat:!0},{raw:function(e){var t=s(i(e).raw),n=l(t);if(!n)return"";for(var r=arguments.length,o=[],p=0;;){if(c(o,a(t[p++])),p===n)return u(o,"");p{n(76887)({target:"String",proto:!0},{repeat:n(16178)})},94761:(e,t,n)=>{"use strict";var r,o=n(76887),s=n(97484),i=n(49677).f,a=n(43057),l=n(85803),c=n(70344),u=n(48219),p=n(67772),h=n(82529),f=s("".startsWith),d=s("".slice),m=Math.min,g=p("startsWith");o({target:"String",proto:!0,forced:!!(h||g||(r=i(String.prototype,"startsWith"),!r||r.writable))&&!g},{startsWith:function(e){var t=l(u(this));c(e);var n=a(m(arguments.length>1?arguments[1]:void 0,t.length)),r=l(e);return f?f(t,r,n):d(t,n,n+r.length)===r}})},57398:(e,t,n)=>{"use strict";var r=n(76887),o=n(74853).trim;r({target:"String",proto:!0,forced:n(93093)("trim")},{trim:function(){return o(this)}})},8555:(e,t,n)=>{n(73464)("asyncIterator")},48616:(e,t,n)=>{"use strict";var r=n(76887),o=n(21899),s=n(78834),i=n(95329),a=n(82529),l=n(55746),c=n(63405),u=n(95981),p=n(90953),h=n(7046),f=n(96059),d=n(74529),m=n(83894),g=n(85803),y=n(31887),v=n(29290),b=n(14771),w=n(10946),E=n(684),x=n(87857),S=n(49677),_=n(65988),j=n(59938),O=n(36760),k=n(95929),A=n(29202),C=n(68726),P=n(44262),N=n(27748),I=n(99418),T=n(99813),R=n(11477),M=n(73464),D=n(29630),F=n(90904),L=n(45402),B=n(3610).forEach,$=P("hidden"),q="Symbol",U="prototype",z=L.set,V=L.getterFor(q),W=Object[U],J=o.Symbol,K=J&&J[U],H=o.TypeError,G=o.QObject,Z=S.f,Y=_.f,X=E.f,Q=O.f,ee=i([].push),te=C("symbols"),ne=C("op-symbols"),re=C("wks"),oe=!G||!G[U]||!G[U].findChild,se=l&&u((function(){return 7!=v(Y({},"a",{get:function(){return Y(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=Z(W,t);r&&delete W[t],Y(e,t,n),r&&e!==W&&Y(W,t,r)}:Y,ie=function(e,t){var n=te[e]=v(K);return z(n,{type:q,tag:e,description:t}),l||(n.description=t),n},ae=function(e,t,n){e===W&&ae(ne,t,n),f(e);var r=m(t);return f(n),p(te,r)?(n.enumerable?(p(e,$)&&e[$][r]&&(e[$][r]=!1),n=v(n,{enumerable:y(0,!1)})):(p(e,$)||Y(e,$,y(1,{})),e[$][r]=!0),se(e,r,n)):Y(e,r,n)},le=function(e,t){f(e);var n=d(t),r=b(n).concat(he(n));return B(r,(function(t){l&&!s(ce,n,t)||ae(e,t,n[t])})),e},ce=function(e){var t=m(e),n=s(Q,this,t);return!(this===W&&p(te,t)&&!p(ne,t))&&(!(n||!p(this,t)||!p(te,t)||p(this,$)&&this[$][t])||n)},ue=function(e,t){var n=d(e),r=m(t);if(n!==W||!p(te,r)||p(ne,r)){var o=Z(n,r);return!o||!p(te,r)||p(n,$)&&n[$][r]||(o.enumerable=!0),o}},pe=function(e){var t=X(d(e)),n=[];return B(t,(function(e){p(te,e)||p(N,e)||ee(n,e)})),n},he=function(e){var t=e===W,n=X(t?ne:d(e)),r=[];return B(n,(function(e){!p(te,e)||t&&!p(W,e)||ee(r,te[e])})),r};c||(k(K=(J=function(){if(h(K,this))throw H("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?g(arguments[0]):void 0,t=I(e),n=function(e){this===W&&s(n,ne,e),p(this,$)&&p(this[$],t)&&(this[$][t]=!1),se(this,t,y(1,e))};return l&&oe&&se(W,t,{configurable:!0,set:n}),ie(t,e)})[U],"toString",(function(){return V(this).tag})),k(J,"withoutSetter",(function(e){return ie(I(e),e)})),O.f=ce,_.f=ae,j.f=le,S.f=ue,w.f=E.f=pe,x.f=he,R.f=function(e){return ie(T(e),e)},l&&(A(K,"description",{configurable:!0,get:function(){return V(this).description}}),a||k(W,"propertyIsEnumerable",ce,{unsafe:!0}))),r({global:!0,constructor:!0,wrap:!0,forced:!c,sham:!c},{Symbol:J}),B(b(re),(function(e){M(e)})),r({target:q,stat:!0,forced:!c},{useSetter:function(){oe=!0},useSimple:function(){oe=!1}}),r({target:"Object",stat:!0,forced:!c,sham:!l},{create:function(e,t){return void 0===t?v(e):le(v(e),t)},defineProperty:ae,defineProperties:le,getOwnPropertyDescriptor:ue}),r({target:"Object",stat:!0,forced:!c},{getOwnPropertyNames:pe}),D(),F(J,q),N[$]=!0},52615:()=>{},64523:(e,t,n)=>{var r=n(76887),o=n(626),s=n(90953),i=n(85803),a=n(68726),l=n(34680),c=a("string-to-symbol-registry"),u=a("symbol-to-string-registry");r({target:"Symbol",stat:!0,forced:!l},{for:function(e){var t=i(e);if(s(c,t))return c[t];var n=o("Symbol")(t);return c[t]=n,u[n]=t,n}})},21732:(e,t,n)=>{n(73464)("hasInstance")},35903:(e,t,n)=>{n(73464)("isConcatSpreadable")},1825:(e,t,n)=>{n(73464)("iterator")},35824:(e,t,n)=>{n(48616),n(64523),n(38608),n(32619),n(37144)},38608:(e,t,n)=>{var r=n(76887),o=n(90953),s=n(56664),i=n(69826),a=n(68726),l=n(34680),c=a("symbol-to-string-registry");r({target:"Symbol",stat:!0,forced:!l},{keyFor:function(e){if(!s(e))throw TypeError(i(e)+" is not a symbol");if(o(c,e))return c[e]}})},45915:(e,t,n)=>{n(73464)("matchAll")},28394:(e,t,n)=>{n(73464)("match")},61766:(e,t,n)=>{n(73464)("replace")},62737:(e,t,n)=>{n(73464)("search")},89911:(e,t,n)=>{n(73464)("species")},74315:(e,t,n)=>{n(73464)("split")},63131:(e,t,n)=>{var r=n(73464),o=n(29630);r("toPrimitive"),o()},64714:(e,t,n)=>{var r=n(626),o=n(73464),s=n(90904);o("toStringTag"),s(r("Symbol"),"Symbol")},70659:(e,t,n)=>{n(73464)("unscopables")},94776:(e,t,n)=>{"use strict";var r,o=n(45602),s=n(21899),i=n(95329),a=n(94380),l=n(21647),c=n(24683),u=n(8850),p=n(10941),h=n(45402).enforce,f=n(95981),d=n(47093),m=Object,g=Array.isArray,y=m.isExtensible,v=m.isFrozen,b=m.isSealed,w=m.freeze,E=m.seal,x={},S={},_=!s.ActiveXObject&&"ActiveXObject"in s,j=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},O=c("WeakMap",j,u),k=O.prototype,A=i(k.set);if(d)if(_){r=u.getConstructor(j,"WeakMap",!0),l.enable();var C=i(k.delete),P=i(k.has),N=i(k.get);a(k,{delete:function(e){if(p(e)&&!y(e)){var t=h(this);return t.frozen||(t.frozen=new r),C(this,e)||t.frozen.delete(e)}return C(this,e)},has:function(e){if(p(e)&&!y(e)){var t=h(this);return t.frozen||(t.frozen=new r),P(this,e)||t.frozen.has(e)}return P(this,e)},get:function(e){if(p(e)&&!y(e)){var t=h(this);return t.frozen||(t.frozen=new r),P(this,e)?N(this,e):t.frozen.get(e)}return N(this,e)},set:function(e,t){if(p(e)&&!y(e)){var n=h(this);n.frozen||(n.frozen=new r),P(this,e)?A(this,e,t):n.frozen.set(e,t)}else A(this,e,t);return this}})}else o&&f((function(){var e=w([]);return A(new O,e,1),!v(e)}))&&a(k,{set:function(e,t){var n;return g(e)&&(v(e)?n=x:b(e)&&(n=S)),A(this,e,t),n==x&&w(e),n==S&&E(e),this}})},54334:(e,t,n)=>{n(94776)},31115:(e,t,n)=>{"use strict";n(24683)("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),n(8850))},1773:(e,t,n)=>{n(31115)},97522:(e,t,n)=>{var r=n(99813),o=n(65988).f,s=r("metadata"),i=Function.prototype;void 0===i[s]&&o(i,s,{value:null})},28783:(e,t,n)=>{n(73464)("asyncDispose")},43975:(e,t,n)=>{n(73464)("dispose")},97618:(e,t,n)=>{n(76887)({target:"Symbol",stat:!0},{isRegisteredSymbol:n(32087)})},22731:(e,t,n)=>{n(76887)({target:"Symbol",stat:!0,name:"isRegisteredSymbol"},{isRegistered:n(32087)})},6989:(e,t,n)=>{n(76887)({target:"Symbol",stat:!0,forced:!0},{isWellKnownSymbol:n(96559)})},85605:(e,t,n)=>{n(76887)({target:"Symbol",stat:!0,name:"isWellKnownSymbol",forced:!0},{isWellKnown:n(96559)})},65799:(e,t,n)=>{n(73464)("matcher")},31943:(e,t,n)=>{n(73464)("metadataKey")},45414:(e,t,n)=>{n(73464)("metadata")},46774:(e,t,n)=>{n(73464)("observable")},80620:(e,t,n)=>{n(73464)("patternMatch")},36172:(e,t,n)=>{n(73464)("replaceAll")},7634:(e,t,n)=>{n(66274);var r=n(63281),o=n(21899),s=n(9697),i=n(32029),a=n(12077),l=n(99813)("toStringTag");for(var c in r){var u=o[c],p=u&&u.prototype;p&&s(p)!==l&&i(p,l,c),a[c]=a.Array}},79229:(e,t,n)=>{var r=n(76887),o=n(21899),s=n(37620)(o.setInterval,!0);r({global:!0,bind:!0,forced:o.setInterval!==s},{setInterval:s})},17749:(e,t,n)=>{var r=n(76887),o=n(21899),s=n(37620)(o.setTimeout,!0);r({global:!0,bind:!0,forced:o.setTimeout!==s},{setTimeout:s})},71249:(e,t,n)=>{n(79229),n(17749)},62524:(e,t,n)=>{"use strict";n(66274);var r=n(76887),o=n(21899),s=n(78834),i=n(95329),a=n(55746),l=n(14766),c=n(95929),u=n(29202),p=n(94380),h=n(90904),f=n(53847),d=n(45402),m=n(5743),g=n(57475),y=n(90953),v=n(86843),b=n(9697),w=n(96059),E=n(10941),x=n(85803),S=n(29290),_=n(31887),j=n(53476),O=n(22902),k=n(18348),A=n(99813),C=n(61388),P=A("iterator"),N="URLSearchParams",I=N+"Iterator",T=d.set,R=d.getterFor(N),M=d.getterFor(I),D=Object.getOwnPropertyDescriptor,F=function(e){if(!a)return o[e];var t=D(o,e);return t&&t.value},L=F("fetch"),B=F("Request"),$=F("Headers"),q=B&&B.prototype,U=$&&$.prototype,z=o.RegExp,V=o.TypeError,W=o.decodeURIComponent,J=o.encodeURIComponent,K=i("".charAt),H=i([].join),G=i([].push),Z=i("".replace),Y=i([].shift),X=i([].splice),Q=i("".split),ee=i("".slice),te=/\+/g,ne=Array(4),re=function(e){return ne[e-1]||(ne[e-1]=z("((?:%[\\da-f]{2}){"+e+"})","gi"))},oe=function(e){try{return W(e)}catch(t){return e}},se=function(e){var t=Z(e,te," "),n=4;try{return W(t)}catch(e){for(;n;)t=Z(t,re(n--),oe);return t}},ie=/[!'()~]|%20/g,ae={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},le=function(e){return ae[e]},ce=function(e){return Z(J(e),ie,le)},ue=f((function(e,t){T(this,{type:I,iterator:j(R(e).entries),kind:t})}),"Iterator",(function(){var e=M(this),t=e.kind,n=e.iterator.next(),r=n.value;return n.done||(n.value="keys"===t?r.key:"values"===t?r.value:[r.key,r.value]),n}),!0),pe=function(e){this.entries=[],this.url=null,void 0!==e&&(E(e)?this.parseObject(e):this.parseQuery("string"==typeof e?"?"===K(e,0)?ee(e,1):e:x(e)))};pe.prototype={type:N,bindURL:function(e){this.url=e,this.update()},parseObject:function(e){var t,n,r,o,i,a,l,c=O(e);if(c)for(n=(t=j(e,c)).next;!(r=s(n,t)).done;){if(i=(o=j(w(r.value))).next,(a=s(i,o)).done||(l=s(i,o)).done||!s(i,o).done)throw V("Expected sequence with length 2");G(this.entries,{key:x(a.value),value:x(l.value)})}else for(var u in e)y(e,u)&&G(this.entries,{key:u,value:x(e[u])})},parseQuery:function(e){if(e)for(var t,n,r=Q(e,"&"),o=0;o0?arguments[0]:void 0));a||(this.size=e.entries.length)},fe=he.prototype;if(p(fe,{append:function(e,t){var n=R(this);k(arguments.length,2),G(n.entries,{key:x(e),value:x(t)}),a||this.length++,n.updateURL()},delete:function(e){for(var t=R(this),n=k(arguments.length,1),r=t.entries,o=x(e),s=n<2?void 0:arguments[1],i=void 0===s?s:x(s),l=0;lt.key?1:-1})),e.updateURL()},forEach:function(e){for(var t,n=R(this).entries,r=v(e,arguments.length>1?arguments[1]:void 0),o=0;o1?ge(arguments[1]):{})}}),g(B)){var ye=function(e){return m(this,q),new B(e,arguments.length>1?ge(arguments[1]):{})};q.constructor=ye,ye.prototype=q,r({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:ye})}}e.exports={URLSearchParams:he,getState:R}},16454:()=>{},73305:()=>{},95304:(e,t,n)=>{n(62524)},62337:()=>{},84630:(e,t,n)=>{var r=n(76887),o=n(626),s=n(95981),i=n(18348),a=n(85803),l=n(14766),c=o("URL");r({target:"URL",stat:!0,forced:!(l&&s((function(){c.canParse()})))},{canParse:function(e){var t=i(arguments.length,1),n=a(e),r=t<2||void 0===arguments[1]?void 0:a(arguments[1]);try{return!!new c(n,r)}catch(e){return!1}}})},47250:(e,t,n)=>{"use strict";n(77971);var r,o=n(76887),s=n(55746),i=n(14766),a=n(21899),l=n(86843),c=n(95329),u=n(95929),p=n(29202),h=n(5743),f=n(90953),d=n(24420),m=n(11354),g=n(15790),y=n(64620).codeAt,v=n(73291),b=n(85803),w=n(90904),E=n(18348),x=n(62524),S=n(45402),_=S.set,j=S.getterFor("URL"),O=x.URLSearchParams,k=x.getState,A=a.URL,C=a.TypeError,P=a.parseInt,N=Math.floor,I=Math.pow,T=c("".charAt),R=c(/./.exec),M=c([].join),D=c(1..toString),F=c([].pop),L=c([].push),B=c("".replace),$=c([].shift),q=c("".split),U=c("".slice),z=c("".toLowerCase),V=c([].unshift),W="Invalid scheme",J="Invalid host",K="Invalid port",H=/[a-z]/i,G=/[\d+-.a-z]/i,Z=/\d/,Y=/^0x/i,X=/^[0-7]+$/,Q=/^\d+$/,ee=/^[\da-f]+$/i,te=/[\0\t\n\r #%/:<>?@[\\\]^|]/,ne=/[\0\t\n\r #/:<>?@[\\\]^|]/,re=/^[\u0000-\u0020]+/,oe=/(^|[^\u0000-\u0020])[\u0000-\u0020]+$/,se=/[\t\n\r]/g,ie=function(e){var t,n,r,o;if("number"==typeof e){for(t=[],n=0;n<4;n++)V(t,e%256),e=N(e/256);return M(t,".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,o=0,s=0;s<8;s++)0!==e[s]?(o>n&&(t=r,n=o),r=null,o=0):(null===r&&(r=s),++o);return o>n&&(t=r,n=o),t}(e),n=0;n<8;n++)o&&0===e[n]||(o&&(o=!1),r===n?(t+=n?":":"::",o=!0):(t+=D(e[n],16),n<7&&(t+=":")));return"["+t+"]"}return e},ae={},le=d({},ae,{" ":1,'"':1,"<":1,">":1,"`":1}),ce=d({},le,{"#":1,"?":1,"{":1,"}":1}),ue=d({},ce,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),pe=function(e,t){var n=y(e,0);return n>32&&n<127&&!f(t,e)?e:encodeURIComponent(e)},he={ftp:21,file:null,http:80,https:443,ws:80,wss:443},fe=function(e,t){var n;return 2==e.length&&R(H,T(e,0))&&(":"==(n=T(e,1))||!t&&"|"==n)},de=function(e){var t;return e.length>1&&fe(U(e,0,2))&&(2==e.length||"/"===(t=T(e,2))||"\\"===t||"?"===t||"#"===t)},me=function(e){return"."===e||"%2e"===z(e)},ge={},ye={},ve={},be={},we={},Ee={},xe={},Se={},_e={},je={},Oe={},ke={},Ae={},Ce={},Pe={},Ne={},Ie={},Te={},Re={},Me={},De={},Fe=function(e,t,n){var r,o,s,i=b(e);if(t){if(o=this.parse(i))throw C(o);this.searchParams=null}else{if(void 0!==n&&(r=new Fe(n,!0)),o=this.parse(i,null,r))throw C(o);(s=k(new O)).bindURL(this),this.searchParams=s}};Fe.prototype={type:"URL",parse:function(e,t,n){var o,s,i,a,l,c=this,u=t||ge,p=0,h="",d=!1,y=!1,v=!1;for(e=b(e),t||(c.scheme="",c.username="",c.password="",c.host=null,c.port=null,c.path=[],c.query=null,c.fragment=null,c.cannotBeABaseURL=!1,e=B(e,re,""),e=B(e,oe,"$1")),e=B(e,se,""),o=m(e);p<=o.length;){switch(s=o[p],u){case ge:if(!s||!R(H,s)){if(t)return W;u=ve;continue}h+=z(s),u=ye;break;case ye:if(s&&(R(G,s)||"+"==s||"-"==s||"."==s))h+=z(s);else{if(":"!=s){if(t)return W;h="",u=ve,p=0;continue}if(t&&(c.isSpecial()!=f(he,h)||"file"==h&&(c.includesCredentials()||null!==c.port)||"file"==c.scheme&&!c.host))return;if(c.scheme=h,t)return void(c.isSpecial()&&he[c.scheme]==c.port&&(c.port=null));h="","file"==c.scheme?u=Ce:c.isSpecial()&&n&&n.scheme==c.scheme?u=be:c.isSpecial()?u=Se:"/"==o[p+1]?(u=we,p++):(c.cannotBeABaseURL=!0,L(c.path,""),u=Re)}break;case ve:if(!n||n.cannotBeABaseURL&&"#"!=s)return W;if(n.cannotBeABaseURL&&"#"==s){c.scheme=n.scheme,c.path=g(n.path),c.query=n.query,c.fragment="",c.cannotBeABaseURL=!0,u=De;break}u="file"==n.scheme?Ce:Ee;continue;case be:if("/"!=s||"/"!=o[p+1]){u=Ee;continue}u=_e,p++;break;case we:if("/"==s){u=je;break}u=Te;continue;case Ee:if(c.scheme=n.scheme,s==r)c.username=n.username,c.password=n.password,c.host=n.host,c.port=n.port,c.path=g(n.path),c.query=n.query;else if("/"==s||"\\"==s&&c.isSpecial())u=xe;else if("?"==s)c.username=n.username,c.password=n.password,c.host=n.host,c.port=n.port,c.path=g(n.path),c.query="",u=Me;else{if("#"!=s){c.username=n.username,c.password=n.password,c.host=n.host,c.port=n.port,c.path=g(n.path),c.path.length--,u=Te;continue}c.username=n.username,c.password=n.password,c.host=n.host,c.port=n.port,c.path=g(n.path),c.query=n.query,c.fragment="",u=De}break;case xe:if(!c.isSpecial()||"/"!=s&&"\\"!=s){if("/"!=s){c.username=n.username,c.password=n.password,c.host=n.host,c.port=n.port,u=Te;continue}u=je}else u=_e;break;case Se:if(u=_e,"/"!=s||"/"!=T(h,p+1))continue;p++;break;case _e:if("/"!=s&&"\\"!=s){u=je;continue}break;case je:if("@"==s){d&&(h="%40"+h),d=!0,i=m(h);for(var w=0;w65535)return K;c.port=c.isSpecial()&&S===he[c.scheme]?null:S,h=""}if(t)return;u=Ie;continue}return K}h+=s;break;case Ce:if(c.scheme="file","/"==s||"\\"==s)u=Pe;else{if(!n||"file"!=n.scheme){u=Te;continue}if(s==r)c.host=n.host,c.path=g(n.path),c.query=n.query;else if("?"==s)c.host=n.host,c.path=g(n.path),c.query="",u=Me;else{if("#"!=s){de(M(g(o,p),""))||(c.host=n.host,c.path=g(n.path),c.shortenPath()),u=Te;continue}c.host=n.host,c.path=g(n.path),c.query=n.query,c.fragment="",u=De}}break;case Pe:if("/"==s||"\\"==s){u=Ne;break}n&&"file"==n.scheme&&!de(M(g(o,p),""))&&(fe(n.path[0],!0)?L(c.path,n.path[0]):c.host=n.host),u=Te;continue;case Ne:if(s==r||"/"==s||"\\"==s||"?"==s||"#"==s){if(!t&&fe(h))u=Te;else if(""==h){if(c.host="",t)return;u=Ie}else{if(a=c.parseHost(h))return a;if("localhost"==c.host&&(c.host=""),t)return;h="",u=Ie}continue}h+=s;break;case Ie:if(c.isSpecial()){if(u=Te,"/"!=s&&"\\"!=s)continue}else if(t||"?"!=s)if(t||"#"!=s){if(s!=r&&(u=Te,"/"!=s))continue}else c.fragment="",u=De;else c.query="",u=Me;break;case Te:if(s==r||"/"==s||"\\"==s&&c.isSpecial()||!t&&("?"==s||"#"==s)){if(".."===(l=z(l=h))||"%2e."===l||".%2e"===l||"%2e%2e"===l?(c.shortenPath(),"/"==s||"\\"==s&&c.isSpecial()||L(c.path,"")):me(h)?"/"==s||"\\"==s&&c.isSpecial()||L(c.path,""):("file"==c.scheme&&!c.path.length&&fe(h)&&(c.host&&(c.host=""),h=T(h,0)+":"),L(c.path,h)),h="","file"==c.scheme&&(s==r||"?"==s||"#"==s))for(;c.path.length>1&&""===c.path[0];)$(c.path);"?"==s?(c.query="",u=Me):"#"==s&&(c.fragment="",u=De)}else h+=pe(s,ce);break;case Re:"?"==s?(c.query="",u=Me):"#"==s?(c.fragment="",u=De):s!=r&&(c.path[0]+=pe(s,ae));break;case Me:t||"#"!=s?s!=r&&("'"==s&&c.isSpecial()?c.query+="%27":c.query+="#"==s?"%23":pe(s,ae)):(c.fragment="",u=De);break;case De:s!=r&&(c.fragment+=pe(s,le))}p++}},parseHost:function(e){var t,n,r;if("["==T(e,0)){if("]"!=T(e,e.length-1))return J;if(t=function(e){var t,n,r,o,s,i,a,l=[0,0,0,0,0,0,0,0],c=0,u=null,p=0,h=function(){return T(e,p)};if(":"==h()){if(":"!=T(e,1))return;p+=2,u=++c}for(;h();){if(8==c)return;if(":"!=h()){for(t=n=0;n<4&&R(ee,h());)t=16*t+P(h(),16),p++,n++;if("."==h()){if(0==n)return;if(p-=n,c>6)return;for(r=0;h();){if(o=null,r>0){if(!("."==h()&&r<4))return;p++}if(!R(Z,h()))return;for(;R(Z,h());){if(s=P(h(),10),null===o)o=s;else{if(0==o)return;o=10*o+s}if(o>255)return;p++}l[c]=256*l[c]+o,2!=++r&&4!=r||c++}if(4!=r)return;break}if(":"==h()){if(p++,!h())return}else if(h())return;l[c++]=t}else{if(null!==u)return;p++,u=++c}}if(null!==u)for(i=c-u,c=7;0!=c&&i>0;)a=l[c],l[c--]=l[u+i-1],l[u+--i]=a;else if(8!=c)return;return l}(U(e,1,-1)),!t)return J;this.host=t}else if(this.isSpecial()){if(e=v(e),R(te,e))return J;if(t=function(e){var t,n,r,o,s,i,a,l=q(e,".");if(l.length&&""==l[l.length-1]&&l.length--,(t=l.length)>4)return e;for(n=[],r=0;r1&&"0"==T(o,0)&&(s=R(Y,o)?16:8,o=U(o,8==s?1:2)),""===o)i=0;else{if(!R(10==s?Q:8==s?X:ee,o))return e;i=P(o,s)}L(n,i)}for(r=0;r=I(256,5-t))return null}else if(i>255)return null;for(a=F(n),r=0;r1?arguments[1]:void 0,r=_(t,new Fe(e,!1,n));s||(t.href=r.serialize(),t.origin=r.getOrigin(),t.protocol=r.getProtocol(),t.username=r.getUsername(),t.password=r.getPassword(),t.host=r.getHost(),t.hostname=r.getHostname(),t.port=r.getPort(),t.pathname=r.getPathname(),t.search=r.getSearch(),t.searchParams=r.getSearchParams(),t.hash=r.getHash())},Be=Le.prototype,$e=function(e,t){return{get:function(){return j(this)[e]()},set:t&&function(e){return j(this)[t](e)},configurable:!0,enumerable:!0}};if(s&&(p(Be,"href",$e("serialize","setHref")),p(Be,"origin",$e("getOrigin")),p(Be,"protocol",$e("getProtocol","setProtocol")),p(Be,"username",$e("getUsername","setUsername")),p(Be,"password",$e("getPassword","setPassword")),p(Be,"host",$e("getHost","setHost")),p(Be,"hostname",$e("getHostname","setHostname")),p(Be,"port",$e("getPort","setPort")),p(Be,"pathname",$e("getPathname","setPathname")),p(Be,"search",$e("getSearch","setSearch")),p(Be,"searchParams",$e("getSearchParams")),p(Be,"hash",$e("getHash","setHash"))),u(Be,"toJSON",(function(){return j(this).serialize()}),{enumerable:!0}),u(Be,"toString",(function(){return j(this).serialize()}),{enumerable:!0}),A){var qe=A.createObjectURL,Ue=A.revokeObjectURL;qe&&u(Le,"createObjectURL",l(qe,A)),Ue&&u(Le,"revokeObjectURL",l(Ue,A))}w(Le,"URL"),o({global:!0,constructor:!0,forced:!i,sham:!s},{URL:Le})},33601:(e,t,n)=>{n(47250)},98947:()=>{},24848:(e,t,n)=>{var r=n(54493);e.exports=r},83363:(e,t,n)=>{var r=n(24034);e.exports=r},62908:(e,t,n)=>{var r=n(12710);e.exports=r},49216:(e,t,n)=>{var r=n(99324);e.exports=r},56668:(e,t,n)=>{var r=n(95909);e.exports=r},74719:(e,t,n)=>{var r=n(14423);e.exports=r},57784:(e,t,n)=>{var r=n(81103);e.exports=r},28196:(e,t,n)=>{var r=n(16246);e.exports=r},8065:(e,t,n)=>{var r=n(56043);e.exports=r},57448:(e,t,n)=>{n(7634);var r=n(9697),o=n(90953),s=n(7046),i=n(62908),a=Array.prototype,l={DOMTokenList:!0,NodeList:!0};e.exports=function(e){var t=e.entries;return e===a||s(a,e)&&t===a.entries||o(l,r(e))?i:t}},29455:(e,t,n)=>{var r=n(13160);e.exports=r},69743:(e,t,n)=>{var r=n(80446);e.exports=r},11955:(e,t,n)=>{var r=n(2480);e.exports=r},96064:(e,t,n)=>{var r=n(7147);e.exports=r},61577:(e,t,n)=>{var r=n(32236);e.exports=r},46279:(e,t,n)=>{n(7634);var r=n(9697),o=n(90953),s=n(7046),i=n(49216),a=Array.prototype,l={DOMTokenList:!0,NodeList:!0};e.exports=function(e){var t=e.forEach;return e===a||s(a,e)&&t===a.forEach||o(l,r(e))?i:t}},33778:(e,t,n)=>{var r=n(58557);e.exports=r},19373:(e,t,n)=>{var r=n(34570);e.exports=r},73819:(e,t,n)=>{n(7634);var r=n(9697),o=n(90953),s=n(7046),i=n(56668),a=Array.prototype,l={DOMTokenList:!0,NodeList:!0};e.exports=function(e){var t=e.keys;return e===a||s(a,e)&&t===a.keys||o(l,r(e))?i:t}},11022:(e,t,n)=>{var r=n(57564);e.exports=r},61798:(e,t,n)=>{var r=n(88287);e.exports=r},52759:(e,t,n)=>{var r=n(93993);e.exports=r},52527:(e,t,n)=>{var r=n(68025);e.exports=r},36857:(e,t,n)=>{var r=n(59257);e.exports=r},82073:(e,t,n)=>{var r=n(69601);e.exports=r},45286:(e,t,n)=>{var r=n(28299);e.exports=r},62856:(e,t,n)=>{var r=n(69355);e.exports=r},2348:(e,t,n)=>{var r=n(18339);e.exports=r},35178:(e,t,n)=>{var r=n(71611);e.exports=r},76361:(e,t,n)=>{var r=n(62774);e.exports=r},71815:(e,t,n)=>{n(7634);var r=n(9697),o=n(90953),s=n(7046),i=n(74719),a=Array.prototype,l={DOMTokenList:!0,NodeList:!0};e.exports=function(e){var t=e.values;return e===a||s(a,e)&&t===a.values||o(l,r(e))?i:t}},8933:(e,t,n)=>{var r=n(84426);e.exports=r},15868:(e,t,n)=>{var r=n(91018);n(7634),e.exports=r},14873:(e,t,n)=>{var r=n(97849);e.exports=r},38849:(e,t,n)=>{var r=n(3820);e.exports=r},63383:(e,t,n)=>{var r=n(45999);e.exports=r},57396:(e,t,n)=>{var r=n(7702);e.exports=r},41910:(e,t,n)=>{var r=n(48171);e.exports=r},86209:(e,t,n)=>{var r=n(73081);e.exports=r},53402:(e,t,n)=>{var r=n(7699);n(7634),e.exports=r},79427:(e,t,n)=>{var r=n(286);e.exports=r},62857:(e,t,n)=>{var r=n(92766);e.exports=r},9534:(e,t,n)=>{var r=n(30498);e.exports=r},23059:(e,t,n)=>{var r=n(48494);e.exports=r},47795:(e,t,n)=>{var r=n(98430);e.exports=r},27460:(e,t,n)=>{var r=n(52956);n(7634),e.exports=r},27989:(e,t,n)=>{n(71249);var r=n(54058);e.exports=r.setTimeout},5519:(e,t,n)=>{var r=n(76998);n(7634),e.exports=r},23452:(e,t,n)=>{var r=n(97089);e.exports=r},92547:(e,t,n)=>{var r=n(57473);n(7634),e.exports=r},46509:(e,t,n)=>{var r=n(24227);n(7634),e.exports=r},35774:(e,t,n)=>{var r=n(62978);e.exports=r},57641:(e,t,n)=>{var r=n(71459);e.exports=r},72010:(e,t,n)=>{var r=n(32304);n(7634),e.exports=r},93726:(e,t,n)=>{var r=n(29567);n(7634),e.exports=r},47610:(e,t,n)=>{n(95304),n(16454),n(73305),n(62337);var r=n(54058);e.exports=r.URLSearchParams},71459:(e,t,n)=>{n(47610),n(33601),n(84630),n(98947);var r=n(54058);e.exports=r.URL},31905:function(){!function(e){!function(t){var n="URLSearchParams"in e,r="Symbol"in e&&"iterator"in Symbol,o="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),s="FormData"in e,i="ArrayBuffer"in e;if(i)var a=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],l=ArrayBuffer.isView||function(e){return e&&a.indexOf(Object.prototype.toString.call(e))>-1};function c(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function u(e){return"string"!=typeof e&&(e=String(e)),e}function p(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return r&&(t[Symbol.iterator]=function(){return t}),t}function h(e){this.map={},e instanceof h?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function f(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function d(e){return new Promise((function(t,n){e.onload=function(){t(e.result)},e.onerror=function(){n(e.error)}}))}function m(e){var t=new FileReader,n=d(t);return t.readAsArrayBuffer(e),n}function g(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function y(){return this.bodyUsed=!1,this._initBody=function(e){var t;this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:o&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:s&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:n&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():i&&o&&((t=e)&&DataView.prototype.isPrototypeOf(t))?(this._bodyArrayBuffer=g(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):i&&(ArrayBuffer.prototype.isPrototypeOf(e)||l(e))?this._bodyArrayBuffer=g(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},o&&(this.blob=function(){var e=f(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?f(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(m)}),this.text=function(){var e,t,n,r=f(this);if(r)return r;if(this._bodyBlob)return e=this._bodyBlob,t=new FileReader,n=d(t),t.readAsText(e),n;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),n=new Array(t.length),r=0;r-1?r:n),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&o)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(o)}function w(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var n=e.split("="),r=n.shift().replace(/\+/g," "),o=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(r),decodeURIComponent(o))}})),t}function E(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new h(t.headers),this.url=t.url||"",this._initBody(e)}b.prototype.clone=function(){return new b(this,{body:this._bodyInit})},y.call(b.prototype),y.call(E.prototype),E.prototype.clone=function(){return new E(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new h(this.headers),url:this.url})},E.error=function(){var e=new E(null,{status:0,statusText:""});return e.type="error",e};var x=[301,302,303,307,308];E.redirect=function(e,t){if(-1===x.indexOf(t))throw new RangeError("Invalid status code");return new E(null,{status:t,headers:{location:e}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var n=Error(e);this.stack=n.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function S(e,n){return new Promise((function(r,s){var i=new b(e,n);if(i.signal&&i.signal.aborted)return s(new t.DOMException("Aborted","AbortError"));var a=new XMLHttpRequest;function l(){a.abort()}a.onload=function(){var e,t,n={status:a.status,statusText:a.statusText,headers:(e=a.getAllResponseHeaders()||"",t=new h,e.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(e){var n=e.split(":"),r=n.shift().trim();if(r){var o=n.join(":").trim();t.append(r,o)}})),t)};n.url="responseURL"in a?a.responseURL:n.headers.get("X-Request-URL");var o="response"in a?a.response:a.responseText;r(new E(o,n))},a.onerror=function(){s(new TypeError("Network request failed"))},a.ontimeout=function(){s(new TypeError("Network request failed"))},a.onabort=function(){s(new t.DOMException("Aborted","AbortError"))},a.open(i.method,i.url,!0),"include"===i.credentials?a.withCredentials=!0:"omit"===i.credentials&&(a.withCredentials=!1),"responseType"in a&&o&&(a.responseType="blob"),i.headers.forEach((function(e,t){a.setRequestHeader(t,e)})),i.signal&&(i.signal.addEventListener("abort",l),a.onreadystatechange=function(){4===a.readyState&&i.signal.removeEventListener("abort",l)}),a.send(void 0===i._bodyInit?null:i._bodyInit)}))}S.polyfill=!0,e.fetch||(e.fetch=S,e.Headers=h,e.Request=b,e.Response=E),t.Headers=h,t.Request=b,t.Response=E,t.fetch=S,Object.defineProperty(t,"__esModule",{value:!0})}({})}("undefined"!=typeof self?self:this)},8269:function(e,t,n){var r;r=void 0!==n.g?n.g:this,e.exports=function(e){if(e.CSS&&e.CSS.escape)return e.CSS.escape;var t=function(e){if(0==arguments.length)throw new TypeError("`CSS.escape` requires an argument.");for(var t,n=String(e),r=n.length,o=-1,s="",i=n.charCodeAt(0);++o=1&&t<=31||127==t||0==o&&t>=48&&t<=57||1==o&&t>=48&&t<=57&&45==i?"\\"+t.toString(16)+" ":0==o&&1==r&&45==t||!(t>=128||45==t||95==t||t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122)?"\\"+n.charAt(o):n.charAt(o):s+="�";return s};return e.CSS||(e.CSS={}),e.CSS.escape=t,t}(r)},27698:(e,t,n)=>{"use strict";var r=n(48764).Buffer;function o(e){return e instanceof r||e instanceof Date||e instanceof RegExp}function s(e){if(e instanceof r){var t=r.alloc?r.alloc(e.length):new r(e.length);return e.copy(t),t}if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e);throw new Error("Unexpected situation")}function i(e){var t=[];return e.forEach((function(e,n){"object"==typeof e&&null!==e?Array.isArray(e)?t[n]=i(e):o(e)?t[n]=s(e):t[n]=l({},e):t[n]=e})),t}function a(e,t){return"__proto__"===t?void 0:e[t]}var l=e.exports=function(){if(arguments.length<1||"object"!=typeof arguments[0])return!1;if(arguments.length<2)return arguments[0];var e,t,n=arguments[0];return Array.prototype.slice.call(arguments,1).forEach((function(r){"object"!=typeof r||null===r||Array.isArray(r)||Object.keys(r).forEach((function(c){return t=a(n,c),(e=a(r,c))===n?void 0:"object"!=typeof e||null===e?void(n[c]=e):Array.isArray(e)?void(n[c]=i(e)):o(e)?void(n[c]=s(e)):"object"!=typeof t||null===t||Array.isArray(t)?void(n[c]=l({},e)):void(n[c]=l(t,e))}))})),n}},9996:e=>{"use strict";var t=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===n}(e)}(e)};var n="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function r(e,t){return!1!==t.clone&&t.isMergeableObject(e)?l((n=e,Array.isArray(n)?[]:{}),e,t):e;var n}function o(e,t,n){return e.concat(t).map((function(e){return r(e,n)}))}function s(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(t){return Object.propertyIsEnumerable.call(e,t)})):[]}(e))}function i(e,t){try{return t in e}catch(e){return!1}}function a(e,t,n){var o={};return n.isMergeableObject(e)&&s(e).forEach((function(t){o[t]=r(e[t],n)})),s(t).forEach((function(s){(function(e,t){return i(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))})(e,s)||(i(e,s)&&n.isMergeableObject(t[s])?o[s]=function(e,t){if(!t.customMerge)return l;var n=t.customMerge(e);return"function"==typeof n?n:l}(s,n)(e[s],t[s],n):o[s]=r(t[s],n))})),o}function l(e,n,s){(s=s||{}).arrayMerge=s.arrayMerge||o,s.isMergeableObject=s.isMergeableObject||t,s.cloneUnlessOtherwiseSpecified=r;var i=Array.isArray(n);return i===Array.isArray(e)?i?s.arrayMerge(e,n,s):a(e,n,s):r(n,s)}l.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce((function(e,n){return l(e,n,t)}),{})};var c=l;e.exports=c},27856:function(e){e.exports=function(){"use strict";const{entries:e,setPrototypeOf:t,isFrozen:n,getPrototypeOf:r,getOwnPropertyDescriptor:o}=Object;let{freeze:s,seal:i,create:a}=Object,{apply:l,construct:c}="undefined"!=typeof Reflect&&Reflect;l||(l=function(e,t,n){return e.apply(t,n)}),s||(s=function(e){return e}),i||(i=function(e){return e}),c||(c=function(e,t){return new e(...t)});const u=E(Array.prototype.forEach),p=E(Array.prototype.pop),h=E(Array.prototype.push),f=E(String.prototype.toLowerCase),d=E(String.prototype.toString),m=E(String.prototype.match),g=E(String.prototype.replace),y=E(String.prototype.indexOf),v=E(String.prototype.trim),b=E(RegExp.prototype.test),w=x(TypeError);function E(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o/gm),B=i(/\${[\w\W]*}/gm),$=i(/^data-[\-\w.\u00B7-\uFFFF]/),q=i(/^aria-[\-\w]+$/),U=i(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),z=i(/^(?:\w+script|data):/i),V=i(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),W=i(/^html$/i);var J=Object.freeze({__proto__:null,MUSTACHE_EXPR:F,ERB_EXPR:L,TMPLIT_EXPR:B,DATA_ATTR:$,ARIA_ATTR:q,IS_ALLOWED_URI:U,IS_SCRIPT_OR_DATA:z,ATTR_WHITESPACE:V,DOCTYPE_NAME:W});const K=()=>"undefined"==typeof window?null:window,H=function(e,t){if("object"!=typeof e||"function"!=typeof e.createPolicy)return null;let n=null;const r="data-tt-policy-suffix";t&&t.hasAttribute(r)&&(n=t.getAttribute(r));const o="dompurify"+(n?"#"+n:"");try{return e.createPolicy(o,{createHTML:e=>e,createScriptURL:e=>e})}catch(e){return console.warn("TrustedTypes policy "+o+" could not be created."),null}};function G(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:K();const n=e=>G(e);if(n.version="3.0.3",n.removed=[],!t||!t.document||9!==t.document.nodeType)return n.isSupported=!1,n;const r=t.document,o=r.currentScript;let{document:i}=t;const{DocumentFragment:a,HTMLTemplateElement:l,Node:c,Element:E,NodeFilter:x,NamedNodeMap:F=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:L,DOMParser:B,trustedTypes:$}=t,q=E.prototype,z=j(q,"cloneNode"),V=j(q,"nextSibling"),Z=j(q,"childNodes"),Y=j(q,"parentNode");if("function"==typeof l){const e=i.createElement("template");e.content&&e.content.ownerDocument&&(i=e.content.ownerDocument)}let X,Q="";const{implementation:ee,createNodeIterator:te,createDocumentFragment:ne,getElementsByTagName:re}=i,{importNode:oe}=r;let se={};n.isSupported="function"==typeof e&&"function"==typeof Y&&ee&&void 0!==ee.createHTMLDocument;const{MUSTACHE_EXPR:ie,ERB_EXPR:ae,TMPLIT_EXPR:le,DATA_ATTR:ce,ARIA_ATTR:ue,IS_SCRIPT_OR_DATA:pe,ATTR_WHITESPACE:he}=J;let{IS_ALLOWED_URI:fe}=J,de=null;const me=S({},[...O,...k,...A,...P,...I]);let ge=null;const ye=S({},[...T,...R,...M,...D]);let ve=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),be=null,we=null,Ee=!0,xe=!0,Se=!1,_e=!0,je=!1,Oe=!1,ke=!1,Ae=!1,Ce=!1,Pe=!1,Ne=!1,Ie=!0,Te=!1;const Re="user-content-";let Me=!0,De=!1,Fe={},Le=null;const Be=S({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let $e=null;const qe=S({},["audio","video","img","source","image","track"]);let Ue=null;const ze=S({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Ve="http://www.w3.org/1998/Math/MathML",We="http://www.w3.org/2000/svg",Je="http://www.w3.org/1999/xhtml";let Ke=Je,He=!1,Ge=null;const Ze=S({},[Ve,We,Je],d);let Ye;const Xe=["application/xhtml+xml","text/html"],Qe="text/html";let et,tt=null;const nt=i.createElement("form"),rt=function(e){return e instanceof RegExp||e instanceof Function},ot=function(e){if(!tt||tt!==e){if(e&&"object"==typeof e||(e={}),e=_(e),Ye=Ye=-1===Xe.indexOf(e.PARSER_MEDIA_TYPE)?Qe:e.PARSER_MEDIA_TYPE,et="application/xhtml+xml"===Ye?d:f,de="ALLOWED_TAGS"in e?S({},e.ALLOWED_TAGS,et):me,ge="ALLOWED_ATTR"in e?S({},e.ALLOWED_ATTR,et):ye,Ge="ALLOWED_NAMESPACES"in e?S({},e.ALLOWED_NAMESPACES,d):Ze,Ue="ADD_URI_SAFE_ATTR"in e?S(_(ze),e.ADD_URI_SAFE_ATTR,et):ze,$e="ADD_DATA_URI_TAGS"in e?S(_(qe),e.ADD_DATA_URI_TAGS,et):qe,Le="FORBID_CONTENTS"in e?S({},e.FORBID_CONTENTS,et):Be,be="FORBID_TAGS"in e?S({},e.FORBID_TAGS,et):{},we="FORBID_ATTR"in e?S({},e.FORBID_ATTR,et):{},Fe="USE_PROFILES"in e&&e.USE_PROFILES,Ee=!1!==e.ALLOW_ARIA_ATTR,xe=!1!==e.ALLOW_DATA_ATTR,Se=e.ALLOW_UNKNOWN_PROTOCOLS||!1,_e=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,je=e.SAFE_FOR_TEMPLATES||!1,Oe=e.WHOLE_DOCUMENT||!1,Ce=e.RETURN_DOM||!1,Pe=e.RETURN_DOM_FRAGMENT||!1,Ne=e.RETURN_TRUSTED_TYPE||!1,Ae=e.FORCE_BODY||!1,Ie=!1!==e.SANITIZE_DOM,Te=e.SANITIZE_NAMED_PROPS||!1,Me=!1!==e.KEEP_CONTENT,De=e.IN_PLACE||!1,fe=e.ALLOWED_URI_REGEXP||U,Ke=e.NAMESPACE||Je,ve=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&rt(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(ve.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&rt(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(ve.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(ve.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),je&&(xe=!1),Pe&&(Ce=!0),Fe&&(de=S({},[...I]),ge=[],!0===Fe.html&&(S(de,O),S(ge,T)),!0===Fe.svg&&(S(de,k),S(ge,R),S(ge,D)),!0===Fe.svgFilters&&(S(de,A),S(ge,R),S(ge,D)),!0===Fe.mathMl&&(S(de,P),S(ge,M),S(ge,D))),e.ADD_TAGS&&(de===me&&(de=_(de)),S(de,e.ADD_TAGS,et)),e.ADD_ATTR&&(ge===ye&&(ge=_(ge)),S(ge,e.ADD_ATTR,et)),e.ADD_URI_SAFE_ATTR&&S(Ue,e.ADD_URI_SAFE_ATTR,et),e.FORBID_CONTENTS&&(Le===Be&&(Le=_(Le)),S(Le,e.FORBID_CONTENTS,et)),Me&&(de["#text"]=!0),Oe&&S(de,["html","head","body"]),de.table&&(S(de,["tbody"]),delete be.tbody),e.TRUSTED_TYPES_POLICY){if("function"!=typeof e.TRUSTED_TYPES_POLICY.createHTML)throw w('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw w('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');X=e.TRUSTED_TYPES_POLICY,Q=X.createHTML("")}else void 0===X&&(X=H($,o)),null!==X&&"string"==typeof Q&&(Q=X.createHTML(""));s&&s(e),tt=e}},st=S({},["mi","mo","mn","ms","mtext"]),it=S({},["foreignobject","desc","title","annotation-xml"]),at=S({},["title","style","font","a","script"]),lt=S({},k);S(lt,A),S(lt,C);const ct=S({},P);S(ct,N);const ut=function(e){let t=Y(e);t&&t.tagName||(t={namespaceURI:Ke,tagName:"template"});const n=f(e.tagName),r=f(t.tagName);return!!Ge[e.namespaceURI]&&(e.namespaceURI===We?t.namespaceURI===Je?"svg"===n:t.namespaceURI===Ve?"svg"===n&&("annotation-xml"===r||st[r]):Boolean(lt[n]):e.namespaceURI===Ve?t.namespaceURI===Je?"math"===n:t.namespaceURI===We?"math"===n&&it[r]:Boolean(ct[n]):e.namespaceURI===Je?!(t.namespaceURI===We&&!it[r])&&!(t.namespaceURI===Ve&&!st[r])&&!ct[n]&&(at[n]||!lt[n]):!("application/xhtml+xml"!==Ye||!Ge[e.namespaceURI]))},pt=function(e){h(n.removed,{element:e});try{e.parentNode.removeChild(e)}catch(t){e.remove()}},ht=function(e,t){try{h(n.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){h(n.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!ge[e])if(Ce||Pe)try{pt(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},ft=function(e){let t,n;if(Ae)e=""+e;else{const t=m(e,/^[\r\n\t ]+/);n=t&&t[0]}"application/xhtml+xml"===Ye&&Ke===Je&&(e=''+e+"");const r=X?X.createHTML(e):e;if(Ke===Je)try{t=(new B).parseFromString(r,Ye)}catch(e){}if(!t||!t.documentElement){t=ee.createDocument(Ke,"template",null);try{t.documentElement.innerHTML=He?Q:r}catch(e){}}const o=t.body||t.documentElement;return e&&n&&o.insertBefore(i.createTextNode(n),o.childNodes[0]||null),Ke===Je?re.call(t,Oe?"html":"body")[0]:Oe?t.documentElement:o},dt=function(e){return te.call(e.ownerDocument||e,e,x.SHOW_ELEMENT|x.SHOW_COMMENT|x.SHOW_TEXT,null,!1)},mt=function(e){return e instanceof L&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof F)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},gt=function(e){return"object"==typeof c?e instanceof c:e&&"object"==typeof e&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},yt=function(e,t,r){se[e]&&u(se[e],(e=>{e.call(n,t,r,tt)}))},vt=function(e){let t;if(yt("beforeSanitizeElements",e,null),mt(e))return pt(e),!0;const r=et(e.nodeName);if(yt("uponSanitizeElement",e,{tagName:r,allowedTags:de}),e.hasChildNodes()&&!gt(e.firstElementChild)&&(!gt(e.content)||!gt(e.content.firstElementChild))&&b(/<[/\w]/g,e.innerHTML)&&b(/<[/\w]/g,e.textContent))return pt(e),!0;if(!de[r]||be[r]){if(!be[r]&&wt(r)){if(ve.tagNameCheck instanceof RegExp&&b(ve.tagNameCheck,r))return!1;if(ve.tagNameCheck instanceof Function&&ve.tagNameCheck(r))return!1}if(Me&&!Le[r]){const t=Y(e)||e.parentNode,n=Z(e)||e.childNodes;if(n&&t)for(let r=n.length-1;r>=0;--r)t.insertBefore(z(n[r],!0),V(e))}return pt(e),!0}return e instanceof E&&!ut(e)?(pt(e),!0):"noscript"!==r&&"noembed"!==r||!b(/<\/no(script|embed)/i,e.innerHTML)?(je&&3===e.nodeType&&(t=e.textContent,t=g(t,ie," "),t=g(t,ae," "),t=g(t,le," "),e.textContent!==t&&(h(n.removed,{element:e.cloneNode()}),e.textContent=t)),yt("afterSanitizeElements",e,null),!1):(pt(e),!0)},bt=function(e,t,n){if(Ie&&("id"===t||"name"===t)&&(n in i||n in nt))return!1;if(xe&&!we[t]&&b(ce,t));else if(Ee&&b(ue,t));else if(!ge[t]||we[t]){if(!(wt(e)&&(ve.tagNameCheck instanceof RegExp&&b(ve.tagNameCheck,e)||ve.tagNameCheck instanceof Function&&ve.tagNameCheck(e))&&(ve.attributeNameCheck instanceof RegExp&&b(ve.attributeNameCheck,t)||ve.attributeNameCheck instanceof Function&&ve.attributeNameCheck(t))||"is"===t&&ve.allowCustomizedBuiltInElements&&(ve.tagNameCheck instanceof RegExp&&b(ve.tagNameCheck,n)||ve.tagNameCheck instanceof Function&&ve.tagNameCheck(n))))return!1}else if(Ue[t]);else if(b(fe,g(n,he,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==y(n,"data:")||!$e[e])if(Se&&!b(pe,g(n,he,"")));else if(n)return!1;return!0},wt=function(e){return e.indexOf("-")>0},Et=function(e){let t,r,o,s;yt("beforeSanitizeAttributes",e,null);const{attributes:i}=e;if(!i)return;const a={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:ge};for(s=i.length;s--;){t=i[s];const{name:l,namespaceURI:c}=t;if(r="value"===l?t.value:v(t.value),o=et(l),a.attrName=o,a.attrValue=r,a.keepAttr=!0,a.forceKeepAttr=void 0,yt("uponSanitizeAttribute",e,a),r=a.attrValue,a.forceKeepAttr)continue;if(ht(l,e),!a.keepAttr)continue;if(!_e&&b(/\/>/i,r)){ht(l,e);continue}je&&(r=g(r,ie," "),r=g(r,ae," "),r=g(r,le," "));const u=et(e.nodeName);if(bt(u,o,r)){if(!Te||"id"!==o&&"name"!==o||(ht(l,e),r=Re+r),X&&"object"==typeof $&&"function"==typeof $.getAttributeType)if(c);else switch($.getAttributeType(u,o)){case"TrustedHTML":r=X.createHTML(r);break;case"TrustedScriptURL":r=X.createScriptURL(r)}try{c?e.setAttributeNS(c,l,r):e.setAttribute(l,r),p(n.removed)}catch(e){}}}yt("afterSanitizeAttributes",e,null)},xt=function e(t){let n;const r=dt(t);for(yt("beforeSanitizeShadowDOM",t,null);n=r.nextNode();)yt("uponSanitizeShadowNode",n,null),vt(n)||(n.content instanceof a&&e(n.content),Et(n));yt("afterSanitizeShadowDOM",t,null)};return n.sanitize=function(e){let t,o,s,i,l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(He=!e,He&&(e="\x3c!--\x3e"),"string"!=typeof e&&!gt(e)){if("function"!=typeof e.toString)throw w("toString is not a function");if("string"!=typeof(e=e.toString()))throw w("dirty is not a string, aborting")}if(!n.isSupported)return e;if(ke||ot(l),n.removed=[],"string"==typeof e&&(De=!1),De){if(e.nodeName){const t=et(e.nodeName);if(!de[t]||be[t])throw w("root node is forbidden and cannot be sanitized in-place")}}else if(e instanceof c)t=ft("\x3c!----\x3e"),o=t.ownerDocument.importNode(e,!0),1===o.nodeType&&"BODY"===o.nodeName||"HTML"===o.nodeName?t=o:t.appendChild(o);else{if(!Ce&&!je&&!Oe&&-1===e.indexOf("<"))return X&&Ne?X.createHTML(e):e;if(t=ft(e),!t)return Ce?null:Ne?Q:""}t&&Ae&&pt(t.firstChild);const u=dt(De?e:t);for(;s=u.nextNode();)vt(s)||(s.content instanceof a&&xt(s.content),Et(s));if(De)return e;if(Ce){if(Pe)for(i=ne.call(t.ownerDocument);t.firstChild;)i.appendChild(t.firstChild);else i=t;return(ge.shadowroot||ge.shadowrootmod)&&(i=oe.call(r,i,!0)),i}let p=Oe?t.outerHTML:t.innerHTML;return Oe&&de["!doctype"]&&t.ownerDocument&&t.ownerDocument.doctype&&t.ownerDocument.doctype.name&&b(W,t.ownerDocument.doctype.name)&&(p="\n"+p),je&&(p=g(p,ie," "),p=g(p,ae," "),p=g(p,le," ")),X&&Ne?X.createHTML(p):p},n.setConfig=function(e){ot(e),ke=!0},n.clearConfig=function(){tt=null,ke=!1},n.isValidAttribute=function(e,t,n){tt||ot({});const r=et(e),o=et(t);return bt(r,o,n)},n.addHook=function(e,t){"function"==typeof t&&(se[e]=se[e]||[],h(se[e],t))},n.removeHook=function(e){if(se[e])return p(se[e])},n.removeHooks=function(e){se[e]&&(se[e]=[])},n.removeAllHooks=function(){se={}},n}return G()}()},69450:e=>{"use strict";class t{constructor(e,t){this.low=e,this.high=t,this.length=1+t-e}overlaps(e){return!(this.highe.high)}touches(e){return!(this.high+1e.high)}add(e){return new t(Math.min(this.low,e.low),Math.max(this.high,e.high))}subtract(e){return e.low<=this.low&&e.high>=this.high?[]:e.low>this.low&&e.highe+t.length),0)}add(e,r){var o=e=>{for(var t=0;t{for(var t=0;t{for(var n=0;n{for(var n=t.low;n<=t.high;)e.push(n),n++;return e}),[])}subranges(){return this.ranges.map((e=>({low:e.low,high:e.high,length:1+e.high-e.low})))}}e.exports=n},17187:e=>{"use strict";var t,n="object"==typeof Reflect?Reflect:null,r=n&&"function"==typeof n.apply?n.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};t=n&&"function"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var o=Number.isNaN||function(e){return e!=e};function s(){s.init.call(this)}e.exports=s,e.exports.once=function(e,t){return new Promise((function(n,r){function o(n){e.removeListener(t,s),r(n)}function s(){"function"==typeof e.removeListener&&e.removeListener("error",o),n([].slice.call(arguments))}m(e,t,s,{once:!0}),"error"!==t&&function(e,t,n){"function"==typeof e.on&&m(e,"error",t,n)}(e,o,{once:!0})}))},s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var i=10;function a(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function l(e){return void 0===e._maxListeners?s.defaultMaxListeners:e._maxListeners}function c(e,t,n,r){var o,s,i,c;if(a(n),void 0===(s=e._events)?(s=e._events=Object.create(null),e._eventsCount=0):(void 0!==s.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),s=e._events),i=s[t]),void 0===i)i=s[t]=n,++e._eventsCount;else if("function"==typeof i?i=s[t]=r?[n,i]:[i,n]:r?i.unshift(n):i.push(n),(o=l(e))>0&&i.length>o&&!i.warned){i.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=e,u.type=t,u.count=i.length,c=u,console&&console.warn&&console.warn(c)}return e}function u(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function p(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},o=u.bind(r);return o.listener=n,r.wrapFn=o,o}function h(e,t,n){var r=e._events;if(void 0===r)return[];var o=r[t];return void 0===o?[]:"function"==typeof o?n?[o.listener||o]:[o]:n?function(e){for(var t=new Array(e.length),n=0;n0&&(i=t[0]),i instanceof Error)throw i;var a=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw a.context=i,a}var l=s[e];if(void 0===l)return!1;if("function"==typeof l)r(l,this,t);else{var c=l.length,u=d(l,c);for(n=0;n=0;s--)if(n[s]===t||n[s].listener===t){i=n[s].listener,o=s;break}if(o<0)return this;0===o?n.shift():function(e,t){for(;t+1=0;r--)this.removeListener(e,t[r]);return this},s.prototype.listeners=function(e){return h(this,e,!0)},s.prototype.rawListeners=function(e){return h(this,e,!1)},s.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):f.call(e,t)},s.prototype.listenerCount=f,s.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},21102:(e,t,n)=>{"use strict";var r=n(46291),o=s(Error);function s(e){return t.displayName=e.displayName||e.name,t;function t(t){return t&&(t=r.apply(null,arguments)),new e(t)}}e.exports=o,o.eval=s(EvalError),o.range=s(RangeError),o.reference=s(ReferenceError),o.syntax=s(SyntaxError),o.type=s(TypeError),o.uri=s(URIError),o.create=s},46291:e=>{!function(){var t;function n(e){for(var t,n,r,o,s=1,i=[].slice.call(arguments),a=0,l=e.length,c="",u=!1,p=!1,h=function(){return i[s++]},f=function(){for(var n="";/\d/.test(e[a]);)n+=e[a++],t=e[a];return n.length>0?parseInt(n):null};a{"use strict";var t=Array.prototype.slice,n=Object.prototype.toString;e.exports=function(e){var r=this;if("function"!=typeof r||"[object Function]"!==n.call(r))throw new TypeError("Function.prototype.bind called on incompatible "+r);for(var o,s=t.call(arguments,1),i=Math.max(0,r.length-s.length),a=[],l=0;l{"use strict";var r=n(17648);e.exports=Function.prototype.bind||r},40210:(e,t,n)=>{"use strict";var r,o=SyntaxError,s=Function,i=TypeError,a=function(e){try{return s('"use strict"; return ('+e+").constructor;")()}catch(e){}},l=Object.getOwnPropertyDescriptor;if(l)try{l({},"")}catch(e){l=null}var c=function(){throw new i},u=l?function(){try{return c}catch(e){try{return l(arguments,"callee").get}catch(e){return c}}}():c,p=n(41405)(),h=n(28185)(),f=Object.getPrototypeOf||(h?function(e){return e.__proto__}:null),d={},m="undefined"!=typeof Uint8Array&&f?f(Uint8Array):r,g={"%AggregateError%":"undefined"==typeof AggregateError?r:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?r:ArrayBuffer,"%ArrayIteratorPrototype%":p&&f?f([][Symbol.iterator]()):r,"%AsyncFromSyncIteratorPrototype%":r,"%AsyncFunction%":d,"%AsyncGenerator%":d,"%AsyncGeneratorFunction%":d,"%AsyncIteratorPrototype%":d,"%Atomics%":"undefined"==typeof Atomics?r:Atomics,"%BigInt%":"undefined"==typeof BigInt?r:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?r:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?r:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?r:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?r:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?r:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?r:FinalizationRegistry,"%Function%":s,"%GeneratorFunction%":d,"%Int8Array%":"undefined"==typeof Int8Array?r:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?r:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?r:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":p&&f?f(f([][Symbol.iterator]())):r,"%JSON%":"object"==typeof JSON?JSON:r,"%Map%":"undefined"==typeof Map?r:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&p&&f?f((new Map)[Symbol.iterator]()):r,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?r:Promise,"%Proxy%":"undefined"==typeof Proxy?r:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?r:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?r:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&p&&f?f((new Set)[Symbol.iterator]()):r,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?r:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":p&&f?f(""[Symbol.iterator]()):r,"%Symbol%":p?Symbol:r,"%SyntaxError%":o,"%ThrowTypeError%":u,"%TypedArray%":m,"%TypeError%":i,"%Uint8Array%":"undefined"==typeof Uint8Array?r:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?r:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?r:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?r:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?r:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?r:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?r:WeakSet};if(f)try{null.error}catch(e){var y=f(f(e));g["%Error.prototype%"]=y}var v=function e(t){var n;if("%AsyncFunction%"===t)n=a("async function () {}");else if("%GeneratorFunction%"===t)n=a("function* () {}");else if("%AsyncGeneratorFunction%"===t)n=a("async function* () {}");else if("%AsyncGenerator%"===t){var r=e("%AsyncGeneratorFunction%");r&&(n=r.prototype)}else if("%AsyncIteratorPrototype%"===t){var o=e("%AsyncGenerator%");o&&f&&(n=f(o.prototype))}return g[t]=n,n},b={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},w=n(58612),E=n(17642),x=w.call(Function.call,Array.prototype.concat),S=w.call(Function.apply,Array.prototype.splice),_=w.call(Function.call,String.prototype.replace),j=w.call(Function.call,String.prototype.slice),O=w.call(Function.call,RegExp.prototype.exec),k=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,A=/\\(\\)?/g,C=function(e,t){var n,r=e;if(E(b,r)&&(r="%"+(n=b[r])[0]+"%"),E(g,r)){var s=g[r];if(s===d&&(s=v(r)),void 0===s&&!t)throw new i("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:n,name:r,value:s}}throw new o("intrinsic "+e+" does not exist!")};e.exports=function(e,t){if("string"!=typeof e||0===e.length)throw new i("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new i('"allowMissing" argument must be a boolean');if(null===O(/^%?[^%]*%?$/,e))throw new o("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=function(e){var t=j(e,0,1),n=j(e,-1);if("%"===t&&"%"!==n)throw new o("invalid intrinsic syntax, expected closing `%`");if("%"===n&&"%"!==t)throw new o("invalid intrinsic syntax, expected opening `%`");var r=[];return _(e,k,(function(e,t,n,o){r[r.length]=n?_(o,A,"$1"):t||e})),r}(e),r=n.length>0?n[0]:"",s=C("%"+r+"%",t),a=s.name,c=s.value,u=!1,p=s.alias;p&&(r=p[0],S(n,x([0,1],p)));for(var h=1,f=!0;h=n.length){var v=l(c,d);c=(f=!!v)&&"get"in v&&!("originalValue"in v.get)?v.get:c[d]}else f=E(c,d),c=c[d];f&&!u&&(g[a]=c)}}return c}},28185:e=>{"use strict";var t={foo:{}},n=Object;e.exports=function(){return{__proto__:t}.foo===t.foo&&!({__proto__:null}instanceof n)}},41405:(e,t,n)=>{"use strict";var r="undefined"!=typeof Symbol&&Symbol,o=n(55419);e.exports=function(){return"function"==typeof r&&("function"==typeof Symbol&&("symbol"==typeof r("foo")&&("symbol"==typeof Symbol("bar")&&o())))}},55419:e=>{"use strict";e.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),n=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var r=Object.getOwnPropertySymbols(e);if(1!==r.length||r[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var o=Object.getOwnPropertyDescriptor(e,t);if(42!==o.value||!0!==o.enumerable)return!1}return!0}},17642:(e,t,n)=>{"use strict";var r=n(58612);e.exports=r.call(Function.call,Object.prototype.hasOwnProperty)},47802:e=>{function t(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((function(n){var r=e[n];"object"!=typeof r||Object.isFrozen(r)||t(r)})),e}var n=t,r=t;n.default=r;class o{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function s(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function i(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t];return t.forEach((function(e){for(const t in e)n[t]=e[t]})),n}const a=e=>!!e.kind;class l{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=s(e)}openNode(e){if(!a(e))return;let t=e.kind;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){a(e)&&(this.buffer+="")}value(){return this.buffer}span(e){this.buffer+=``}}class c{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t),t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{c._collapse(e)})))}}class u extends c{constructor(e){super(),this.options=e}addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())}addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){return new l(this,this.options).value()}finalize(){return!0}}function p(e){return e?"string"==typeof e?e:e.source:null}const h=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;const f="[a-zA-Z]\\w*",d="[a-zA-Z_]\\w*",m="\\b\\d+(\\.\\d+)?",g="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",y="\\b(0b[01]+)",v={begin:"\\\\[\\s\\S]",relevance:0},b={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[v]},w={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[v]},E={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},x=function(e,t,n={}){const r=i({className:"comment",begin:e,end:t,contains:[]},n);return r.contains.push(E),r.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),r},S=x("//","$"),_=x("/\\*","\\*/"),j=x("#","$"),O={className:"number",begin:m,relevance:0},k={className:"number",begin:g,relevance:0},A={className:"number",begin:y,relevance:0},C={className:"number",begin:m+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},P={begin:/(?=\/[^/\n]*\/)/,contains:[{className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[v,{begin:/\[/,end:/\]/,relevance:0,contains:[v]}]}]},N={className:"title",begin:f,relevance:0},I={className:"title",begin:d,relevance:0},T={begin:"\\.\\s*"+d,relevance:0};var R=Object.freeze({__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:f,UNDERSCORE_IDENT_RE:d,NUMBER_RE:m,C_NUMBER_RE:g,BINARY_NUMBER_RE:y,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=function(...e){return e.map((e=>p(e))).join("")}(t,/.*\b/,e.binary,/\b.*/)),i({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:v,APOS_STRING_MODE:b,QUOTE_STRING_MODE:w,PHRASAL_WORDS_MODE:E,COMMENT:x,C_LINE_COMMENT_MODE:S,C_BLOCK_COMMENT_MODE:_,HASH_COMMENT_MODE:j,NUMBER_MODE:O,C_NUMBER_MODE:k,BINARY_NUMBER_MODE:A,CSS_NUMBER_MODE:C,REGEXP_MODE:P,TITLE_MODE:N,UNDERSCORE_TITLE_MODE:I,METHOD_GUARD:T,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})}});function M(e,t){"."===e.input[e.index-1]&&t.ignoreMatch()}function D(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=M,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,void 0===e.relevance&&(e.relevance=0))}function F(e,t){Array.isArray(e.illegal)&&(e.illegal=function(...e){return"("+e.map((e=>p(e))).join("|")+")"}(...e.illegal))}function L(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function B(e,t){void 0===e.relevance&&(e.relevance=1)}const $=["of","and","for","in","not","or","if","then","parent","list","value"],q="keyword";function U(e,t,n=q){const r={};return"string"==typeof e?o(n,e.split(" ")):Array.isArray(e)?o(n,e):Object.keys(e).forEach((function(n){Object.assign(r,U(e[n],t,n))})),r;function o(e,n){t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((function(t){const n=t.split("|");r[n[0]]=[e,z(n[0],n[1])]}))}}function z(e,t){return t?Number(t):function(e){return $.includes(e.toLowerCase())}(e)?0:1}function V(e,{plugins:t}){function n(t,n){return new RegExp(p(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class r{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=function(e){return new RegExp(e.toString()+"|").exec("").length-1}(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const e=this.regexes.map((e=>e[1]));this.matcherRe=n(function(e,t="|"){let n=0;return e.map((e=>{n+=1;const t=n;let r=p(e),o="";for(;r.length>0;){const e=h.exec(r);if(!e){o+=r;break}o+=r.substring(0,e.index),r=r.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?o+="\\"+String(Number(e[1])+t):(o+=e[0],"("===e[0]&&n++)}return o})).map((e=>`(${e})`)).join(t)}(e),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e);if(!t)return null;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),r=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,r)}}class o{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const t=new r;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&this.considerAll()),n}}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=i(e.classNameAliases||{}),function t(r,s){const a=r;if(r.isCompiled)return a;[L].forEach((e=>e(r,s))),e.compilerExtensions.forEach((e=>e(r,s))),r.__beforeBegin=null,[D,F,B].forEach((e=>e(r,s))),r.isCompiled=!0;let l=null;if("object"==typeof r.keywords&&(l=r.keywords.$pattern,delete r.keywords.$pattern),r.keywords&&(r.keywords=U(r.keywords,e.case_insensitive)),r.lexemes&&l)throw new Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ");return l=l||r.lexemes||/\w+/,a.keywordPatternRe=n(l,!0),s&&(r.begin||(r.begin=/\B|\b/),a.beginRe=n(r.begin),r.endSameAsBegin&&(r.end=r.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),r.end&&(a.endRe=n(r.end)),a.terminatorEnd=p(r.end)||"",r.endsWithParent&&s.terminatorEnd&&(a.terminatorEnd+=(r.end?"|":"")+s.terminatorEnd)),r.illegal&&(a.illegalRe=n(r.illegal)),r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map((function(e){return function(e){e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((function(t){return i(e,{variants:null},t)})));if(e.cachedVariants)return e.cachedVariants;if(W(e))return i(e,{starts:e.starts?i(e.starts):null});if(Object.isFrozen(e))return i(e);return e}("self"===e?r:e)}))),r.contains.forEach((function(e){t(e,a)})),r.starts&&t(r.starts,s),a.matcher=function(e){const t=new o;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin"}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t}(a),a}(e)}function W(e){return!!e&&(e.endsWithParent||W(e.starts))}function J(e){const t={props:["language","code","autodetect"],data:function(){return{detectedLanguage:"",unknownLanguage:!1}},computed:{className(){return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){if(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`),this.unknownLanguage=!0,s(this.code);let t={};return this.autoDetect?(t=e.highlightAuto(this.code),this.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals),this.detectedLanguage=this.language),t.value},autoDetect(){return!this.language||(e=this.autodetect,Boolean(e||""===e));var e},ignoreIllegals:()=>!0},render(e){return e("pre",{},[e("code",{class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{Component:t,VuePlugin:{install(e){e.component("highlightjs",t)}}}}const K={"after:highlightElement":({el:e,result:t,text:n})=>{const r=G(e);if(!r.length)return;const o=document.createElement("div");o.innerHTML=t.value,t.value=function(e,t,n){let r=0,o="";const i=[];function a(){return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function c(e){o+=""}function u(e){("start"===e.event?l:c)(e.node)}for(;e.length||t.length;){let t=a();if(o+=s(n.substring(r,t[0].offset)),r=t[0].offset,t===e){i.reverse().forEach(c);do{u(t.splice(0,1)[0]),t=a()}while(t===e&&t.length&&t[0].offset===r);i.reverse().forEach(l)}else"start"===t[0].event?i.push(t[0].node):i.pop(),u(t.splice(0,1)[0])}return o+s(n.substr(r))}(r,G(o),n)}};function H(e){return e.nodeName.toLowerCase()}function G(e){const t=[];return function e(n,r){for(let o=n.firstChild;o;o=o.nextSibling)3===o.nodeType?r+=o.nodeValue.length:1===o.nodeType&&(t.push({event:"start",offset:r,node:o}),r=e(o,r),H(o).match(/br|hr|img|input/)||t.push({event:"stop",offset:r,node:o}));return r}(e,0),t}const Z={},Y=e=>{console.error(e)},X=(e,...t)=>{console.log(`WARN: ${e}`,...t)},Q=(e,t)=>{Z[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),Z[`${e}/${t}`]=!0)},ee=s,te=i,ne=Symbol("nomatch");var re=function(e){const t=Object.create(null),r=Object.create(null),s=[];let i=!0;const a=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?",c={disableAutodetect:!0,name:"Plain text",contains:[]};let p={noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:null,__emitter:u};function h(e){return p.noHighlightRe.test(e)}function f(e,t,n,r){let o="",s="";"object"==typeof t?(o=e,n=t.ignoreIllegals,s=t.language,r=void 0):(Q("10.7.0","highlight(lang, code, ...args) has been deprecated."),Q("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),s=e,o=t);const i={code:o,language:s};O("before:highlight",i);const a=i.result?i.result:d(i.language,i.code,n,r);return a.code=i.code,O("after:highlight",a),a}function d(e,n,r,a){function c(e,t){const n=E.case_insensitive?t[0].toLowerCase():t[0];return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]}function u(){null!=j.subLanguage?function(){if(""===A)return;let e=null;if("string"==typeof j.subLanguage){if(!t[j.subLanguage])return void k.addText(A);e=d(j.subLanguage,A,!0,O[j.subLanguage]),O[j.subLanguage]=e.top}else e=m(A,j.subLanguage.length?j.subLanguage:null);j.relevance>0&&(C+=e.relevance),k.addSublanguage(e.emitter,e.language)}():function(){if(!j.keywords)return void k.addText(A);let e=0;j.keywordPatternRe.lastIndex=0;let t=j.keywordPatternRe.exec(A),n="";for(;t;){n+=A.substring(e,t.index);const r=c(j,t);if(r){const[e,o]=r;if(k.addText(n),n="",C+=o,e.startsWith("_"))n+=t[0];else{const n=E.classNameAliases[e]||e;k.addKeyword(t[0],n)}}else n+=t[0];e=j.keywordPatternRe.lastIndex,t=j.keywordPatternRe.exec(A)}n+=A.substr(e),k.addText(n)}(),A=""}function h(e){return e.className&&k.openNode(E.classNameAliases[e.className]||e.className),j=Object.create(e,{parent:{value:j}}),j}function f(e,t,n){let r=function(e,t){const n=e&&e.exec(t);return n&&0===n.index}(e.endRe,n);if(r){if(e["on:end"]){const n=new o(e);e["on:end"](t,n),n.isMatchIgnored&&(r=!1)}if(r){for(;e.endsParent&&e.parent;)e=e.parent;return e}}if(e.endsWithParent)return f(e.parent,t,n)}function g(e){return 0===j.matcher.regexIndex?(A+=e[0],1):(I=!0,0)}function y(e){const t=e[0],n=e.rule,r=new o(n),s=[n.__beforeBegin,n["on:begin"]];for(const n of s)if(n&&(n(e,r),r.isMatchIgnored))return g(t);return n&&n.endSameAsBegin&&(n.endRe=new RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")),n.skip?A+=t:(n.excludeBegin&&(A+=t),u(),n.returnBegin||n.excludeBegin||(A=t)),h(n),n.returnBegin?0:t.length}function v(e){const t=e[0],r=n.substr(e.index),o=f(j,e,r);if(!o)return ne;const s=j;s.skip?A+=t:(s.returnEnd||s.excludeEnd||(A+=t),u(),s.excludeEnd&&(A=t));do{j.className&&k.closeNode(),j.skip||j.subLanguage||(C+=j.relevance),j=j.parent}while(j!==o.parent);return o.starts&&(o.endSameAsBegin&&(o.starts.endRe=o.endRe),h(o.starts)),s.returnEnd?0:t.length}let b={};function w(t,o){const s=o&&o[0];if(A+=t,null==s)return u(),0;if("begin"===b.type&&"end"===o.type&&b.index===o.index&&""===s){if(A+=n.slice(o.index,o.index+1),!i){const t=new Error("0 width match regex");throw t.languageName=e,t.badRule=b.rule,t}return 1}if(b=o,"begin"===o.type)return y(o);if("illegal"===o.type&&!r){const e=new Error('Illegal lexeme "'+s+'" for mode "'+(j.className||"")+'"');throw e.mode=j,e}if("end"===o.type){const e=v(o);if(e!==ne)return e}if("illegal"===o.type&&""===s)return 1;if(N>1e5&&N>3*o.index){throw new Error("potential infinite loop, way more iterations than matches")}return A+=s,s.length}const E=S(e);if(!E)throw Y(l.replace("{}",e)),new Error('Unknown language: "'+e+'"');const x=V(E,{plugins:s});let _="",j=a||x;const O={},k=new p.__emitter(p);!function(){const e=[];for(let t=j;t!==E;t=t.parent)t.className&&e.unshift(t.className);e.forEach((e=>k.openNode(e)))}();let A="",C=0,P=0,N=0,I=!1;try{for(j.matcher.considerAll();;){N++,I?I=!1:j.matcher.considerAll(),j.matcher.lastIndex=P;const e=j.matcher.exec(n);if(!e)break;const t=w(n.substring(P,e.index),e);P=e.index+t}return w(n.substr(P)),k.closeAllNodes(),k.finalize(),_=k.toHTML(),{relevance:Math.floor(C),value:_,language:e,illegal:!1,emitter:k,top:j}}catch(t){if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{msg:t.message,context:n.slice(P-100,P+100),mode:t.mode},sofar:_,relevance:0,value:ee(n),emitter:k};if(i)return{illegal:!1,relevance:0,value:ee(n),emitter:k,language:e,top:j,errorRaised:t};throw t}}function m(e,n){n=n||p.languages||Object.keys(t);const r=function(e){const t={relevance:0,emitter:new p.__emitter(p),value:ee(e),illegal:!1,top:c};return t.emitter.addText(e),t}(e),o=n.filter(S).filter(j).map((t=>d(t,e,!1)));o.unshift(r);const s=o.sort(((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(S(e.language).supersetOf===t.language)return 1;if(S(t.language).supersetOf===e.language)return-1}return 0})),[i,a]=s,l=i;return l.second_best=a,l}const g={"before:highlightElement":({el:e})=>{p.useBR&&(e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n"))},"after:highlightElement":({result:e})=>{p.useBR&&(e.value=e.value.replace(/\n/g,"
"))}},y=/^(<[^>]+>|\t)+/gm,v={"after:highlightElement":({result:e})=>{p.tabReplace&&(e.value=e.value.replace(y,(e=>e.replace(/\t/g,p.tabReplace))))}};function b(e){let t=null;const n=function(e){let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"";const n=p.languageDetectRe.exec(t);if(n){const t=S(n[1]);return t||(X(l.replace("{}",n[1])),X("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>h(e)||S(e)))}(e);if(h(n))return;O("before:highlightElement",{el:e,language:n}),t=e;const o=t.textContent,s=n?f(o,{language:n,ignoreIllegals:!0}):m(o);O("after:highlightElement",{el:e,result:s,text:o}),e.innerHTML=s.value,function(e,t,n){const o=t?r[t]:n;e.classList.add("hljs"),o&&e.classList.add(o)}(e,n,s.language),e.result={language:s.language,re:s.relevance,relavance:s.relevance},s.second_best&&(e.second_best={language:s.second_best.language,re:s.second_best.relevance,relavance:s.second_best.relevance})}const w=()=>{if(w.called)return;w.called=!0,Q("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead.");document.querySelectorAll("pre code").forEach(b)};let E=!1;function x(){if("loading"===document.readyState)return void(E=!0);document.querySelectorAll("pre code").forEach(b)}function S(e){return e=(e||"").toLowerCase(),t[e]||t[r[e]]}function _(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e.toLowerCase()]=t}))}function j(e){const t=S(e);return t&&!t.disableAutodetect}function O(e,t){const n=e;s.forEach((function(e){e[n]&&e[n](t)}))}"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(function(){E&&x()}),!1),Object.assign(e,{highlight:f,highlightAuto:m,highlightAll:x,fixMarkup:function(e){return Q("10.2.0","fixMarkup will be removed entirely in v11.0"),Q("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"),t=e,p.tabReplace||p.useBR?t.replace(a,(e=>"\n"===e?p.useBR?"
":e:p.tabReplace?e.replace(/\t/g,p.tabReplace):e)):t;var t},highlightElement:b,highlightBlock:function(e){return Q("10.7.0","highlightBlock will be removed entirely in v12.0"),Q("10.7.0","Please use highlightElement now."),b(e)},configure:function(e){e.useBR&&(Q("10.3.0","'useBR' will be removed entirely in v11.0"),Q("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")),p=te(p,e)},initHighlighting:w,initHighlightingOnLoad:function(){Q("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."),E=!0},registerLanguage:function(n,r){let o=null;try{o=r(e)}catch(e){if(Y("Language definition for '{}' could not be registered.".replace("{}",n)),!i)throw e;Y(e),o=c}o.name||(o.name=n),t[n]=o,o.rawDefinition=r.bind(null,e),o.aliases&&_(o.aliases,{languageName:n})},unregisterLanguage:function(e){delete t[e];for(const t of Object.keys(r))r[t]===e&&delete r[t]},listLanguages:function(){return Object.keys(t)},getLanguage:S,registerAliases:_,requireLanguage:function(e){Q("10.4.0","requireLanguage will be removed entirely in v11."),Q("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844");const t=S(e);if(t)return t;throw new Error("The '{}' language is required, but not loaded.".replace("{}",e))},autoDetection:j,inherit:te,addPlugin:function(e){!function(e){e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{e["before:highlightBlock"](Object.assign({block:t.el},t))}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{e["after:highlightBlock"](Object.assign({block:t.el},t))})}(e),s.push(e)},vuePlugin:J(e).VuePlugin}),e.debugMode=function(){i=!1},e.safeMode=function(){i=!0},e.versionString="10.7.3";for(const e in R)"object"==typeof R[e]&&n(R[e]);return Object.assign(e,R),e.addPlugin(g),e.addPlugin(K),e.addPlugin(v),e}({});e.exports=re},61519:e=>{function t(...e){return e.map((e=>{return(t=e)?"string"==typeof t?t:t.source:null;var t})).join("")}e.exports=function(e){const n={},r={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{begin:t(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},r]});const o={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},s={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},i={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n,o]};o.contains.push(i);const a={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,n]},l=e.SHEBANG({binary:`(${["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"].join("|")})`,relevance:10}),c={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z._-]+\b/,keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp"},contains:[l,e.SHEBANG(),c,a,e.HASH_COMMENT_MODE,s,i,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},n]}}},30786:e=>{function t(...e){return e.map((e=>{return(t=e)?"string"==typeof t?t:t.source:null;var t})).join("")}e.exports=function(e){const n="HTTP/(2|1\\.[01])",r={className:"attribute",begin:t("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},o=[r,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+n+" \\d{3})",end:/$/,contains:[{className:"meta",begin:n},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:o}},{begin:"(?=^[A-Z]+ (.*?) "+n+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:n},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:o}},e.inherit(r,{relevance:0})]}}},96344:e=>{const t="[A-Za-z$_][0-9A-Za-z$_]*",n=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],r=["true","false","null","undefined","NaN","Infinity"],o=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer","BigInt64Array","BigUint64Array","BigInt"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);function s(e){return i("(?=",e,")")}function i(...e){return e.map((e=>{return(t=e)?"string"==typeof t?t:t.source:null;var t})).join("")}e.exports=function(e){const a=t,l="<>",c="",u={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,t)=>{const n=e[0].length+e.index,r=e.input[n];"<"!==r?">"===r&&(((e,{after:t})=>{const n="",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:p,contains:S}]}]},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{variants:[{begin:l,end:c},{begin:u.begin,"on:begin":u.isTrulyOpeningTag,end:u.end}],subLanguage:"xml",contains:[{begin:u.begin,end:u.end,skip:!0,contains:["self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:p,contains:["self",e.inherit(e.TITLE_MODE,{begin:a}),_],illegal:/%/},{beginKeywords:"while if switch catch for"},{className:"function",begin:e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,contains:[_,e.inherit(e.TITLE_MODE,{begin:a})]},{variants:[{begin:"\\."+a},{begin:"\\$"+a}],relevance:0},{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/,end:/[{;]/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:a}),"self",_]},{begin:"(get|set)\\s+(?="+a+"\\()",end:/\{/,keywords:"get set",contains:[e.inherit(e.TITLE_MODE,{begin:a}),{begin:/\(\)/},_]},{begin:/\$[(.]/}]}}},82026:e=>{e.exports=function(e){const t={literal:"true false null"},n=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],r=[e.QUOTE_STRING_MODE,e.C_NUMBER_MODE],o={end:",",endsWithParent:!0,excludeEnd:!0,contains:r,keywords:t},s={begin:/\{/,end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE],illegal:"\\n"},e.inherit(o,{begin:/:/})].concat(n),illegal:"\\S"},i={begin:"\\[",end:"\\]",contains:[e.inherit(o)],illegal:"\\S"};return r.push(s,i),n.forEach((function(e){r.push(e)})),{name:"JSON",contains:r,keywords:t,illegal:"\\S"}}},66336:e=>{e.exports=function(e){const t={$pattern:/-?[A-z\.\-]+\b/,keyword:"if else foreach return do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch hidden static parameter",built_in:"ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write"},n={begin:"`[\\s\\S]",relevance:0},r={className:"variable",variants:[{begin:/\$\B/},{className:"keyword",begin:/\$this/},{begin:/\$[\w\d][\w\d_:]*/}]},o={className:"string",variants:[{begin:/"/,end:/"/},{begin:/@"/,end:/^"@/}],contains:[n,r,{className:"variable",begin:/\$[A-z]/,end:/[^A-z]/}]},s={className:"string",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}]},i=e.inherit(e.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/,end:/#>/}],contains:[{className:"doctag",variants:[{begin:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/},{begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/}]}]}),a={className:"built_in",variants:[{begin:"(".concat("Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|Unprotect|Use|ForEach|Sort|Tee|Where",")+(-)[\\w\\d]+")}]},l={className:"class",beginKeywords:"class enum",end:/\s*[{]/,excludeEnd:!0,relevance:0,contains:[e.TITLE_MODE]},c={className:"function",begin:/function\s+/,end:/\s*\{|$/,excludeEnd:!0,returnBegin:!0,relevance:0,contains:[{begin:"function",relevance:0,className:"keyword"},{className:"title",begin:/\w[\w\d]*((-)[\w\d]+)*/,relevance:0},{begin:/\(/,end:/\)/,className:"params",relevance:0,contains:[r]}]},u={begin:/using\s/,end:/$/,returnBegin:!0,contains:[o,s,{className:"keyword",begin:/(using|assembly|command|module|namespace|type)/}]},p={variants:[{className:"operator",begin:"(".concat("-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|-split|-wildcard|-xor",")\\b")},{className:"literal",begin:/(-)[\w\d]+/,relevance:0}]},h={className:"function",begin:/\[.*\]\s*[\w]+[ ]??\(/,end:/$/,returnBegin:!0,relevance:0,contains:[{className:"keyword",begin:"(".concat(t.keyword.toString().replace(/\s/g,"|"),")\\b"),endsParent:!0,relevance:0},e.inherit(e.TITLE_MODE,{endsParent:!0})]},f=[h,i,n,e.NUMBER_MODE,o,s,a,r,{className:"literal",begin:/\$(null|true|false)\b/},{className:"selector-tag",begin:/@\B/,relevance:0}],d={begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[].concat("self",f,{begin:"("+["string","char","byte","int","long","bool","decimal","single","double","DateTime","xml","array","hashtable","void"].join("|")+")",className:"built_in",relevance:0},{className:"type",begin:/[\.\w\d]+/,relevance:0})};return h.contains.unshift(d),{name:"PowerShell",aliases:["ps","ps1"],case_insensitive:!0,keywords:t,contains:f.concat(l,c,u,p,d)}}},42157:e=>{function t(e){return e?"string"==typeof e?e:e.source:null}function n(e){return r("(?=",e,")")}function r(...e){return e.map((e=>t(e))).join("")}function o(...e){return"("+e.map((e=>t(e))).join("|")+")"}e.exports=function(e){const t=r(/[A-Z_]/,r("(",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),s={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},i={begin:/\s/,contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},a=e.inherit(i,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{className:"meta-string"}),c=e.inherit(e.QUOTE_STRING_MODE,{className:"meta-string"}),u={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin://,relevance:10,contains:[i,c,l,a,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[i,a,c,l]}]}]},e.COMMENT(//,{relevance:10}),{begin://,relevance:10},s,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[u],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[u],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:r(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:t,relevance:0,starts:u}]},{className:"tag",begin:r(/<\//,n(r(t,/>/))),contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}},54587:e=>{e.exports=function(e){var t="true false yes no null",n="[\\w#;/?:@&=+$,.~*'()[\\]]+",r={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},o=e.inherit(r,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),s={className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},i={end:",",endsWithParent:!0,excludeEnd:!0,keywords:t,relevance:0},a={begin:/\{/,end:/\}/,contains:[i],illegal:"\\n",relevance:0},l={begin:"\\[",end:"\\]",contains:[i],illegal:"\\n",relevance:0},c=[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+n},{className:"type",begin:"!<"+n+">"},{className:"type",begin:"!"+n},{className:"type",begin:"!!"+n},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:t,keywords:{literal:t}},s,{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},a,l,r],u=[...c];return u.pop(),u.push(o),i.contains=u,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:c}}},8679:(e,t,n)=>{"use strict";var r=n(59864),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},s={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},a={};function l(e){return r.isMemo(e)?i:a[e.$$typeof]||o}a[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},a[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,p=Object.getOwnPropertySymbols,h=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,d=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(d){var o=f(n);o&&o!==d&&e(t,o,r)}var i=u(n);p&&(i=i.concat(p(n)));for(var a=l(t),m=l(n),g=0;g{t.read=function(e,t,n,r,o){var s,i,a=8*o-r-1,l=(1<>1,u=-7,p=n?o-1:0,h=n?-1:1,f=e[t+p];for(p+=h,s=f&(1<<-u)-1,f>>=-u,u+=a;u>0;s=256*s+e[t+p],p+=h,u-=8);for(i=s&(1<<-u)-1,s>>=-u,u+=r;u>0;i=256*i+e[t+p],p+=h,u-=8);if(0===s)s=1-c;else{if(s===l)return i?NaN:1/0*(f?-1:1);i+=Math.pow(2,r),s-=c}return(f?-1:1)*i*Math.pow(2,s-r)},t.write=function(e,t,n,r,o,s){var i,a,l,c=8*s-o-1,u=(1<>1,h=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,f=r?0:s-1,d=r?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,i=u):(i=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-i))<1&&(i--,l*=2),(t+=i+p>=1?h/l:h*Math.pow(2,1-p))*l>=2&&(i++,l/=2),i+p>=u?(a=0,i=u):i+p>=1?(a=(t*l-1)*Math.pow(2,o),i+=p):(a=t*Math.pow(2,p-1)*Math.pow(2,o),i=0));o>=8;e[n+f]=255&a,f+=d,a/=256,o-=8);for(i=i<0;e[n+f]=255&i,f+=d,i/=256,c-=8);e[n+f-d]|=128*m}},43393:function(e){e.exports=function(){"use strict";var e=Array.prototype.slice;function t(e,t){t&&(e.prototype=Object.create(t.prototype)),e.prototype.constructor=e}function n(e){return i(e)?e:K(e)}function r(e){return a(e)?e:H(e)}function o(e){return l(e)?e:G(e)}function s(e){return i(e)&&!c(e)?e:Z(e)}function i(e){return!(!e||!e[p])}function a(e){return!(!e||!e[h])}function l(e){return!(!e||!e[f])}function c(e){return a(e)||l(e)}function u(e){return!(!e||!e[d])}t(r,n),t(o,n),t(s,n),n.isIterable=i,n.isKeyed=a,n.isIndexed=l,n.isAssociative=c,n.isOrdered=u,n.Keyed=r,n.Indexed=o,n.Set=s;var p="@@__IMMUTABLE_ITERABLE__@@",h="@@__IMMUTABLE_KEYED__@@",f="@@__IMMUTABLE_INDEXED__@@",d="@@__IMMUTABLE_ORDERED__@@",m="delete",g=5,y=1<>>0;if(""+n!==t||4294967295===n)return NaN;t=n}return t<0?O(e)+t:t}function A(){return!0}function C(e,t,n){return(0===e||void 0!==n&&e<=-n)&&(void 0===t||void 0!==n&&t>=n)}function P(e,t){return I(e,t,0)}function N(e,t){return I(e,t,t)}function I(e,t,n){return void 0===e?n:e<0?Math.max(0,t+e):void 0===t?e:Math.min(t,e)}var T=0,R=1,M=2,D="function"==typeof Symbol&&Symbol.iterator,F="@@iterator",L=D||F;function B(e){this.next=e}function $(e,t,n,r){var o=0===e?t:1===e?n:[t,n];return r?r.value=o:r={value:o,done:!1},r}function q(){return{value:void 0,done:!0}}function U(e){return!!W(e)}function z(e){return e&&"function"==typeof e.next}function V(e){var t=W(e);return t&&t.call(e)}function W(e){var t=e&&(D&&e[D]||e[F]);if("function"==typeof t)return t}function J(e){return e&&"number"==typeof e.length}function K(e){return null==e?ie():i(e)?e.toSeq():ce(e)}function H(e){return null==e?ie().toKeyedSeq():i(e)?a(e)?e.toSeq():e.fromEntrySeq():ae(e)}function G(e){return null==e?ie():i(e)?a(e)?e.entrySeq():e.toIndexedSeq():le(e)}function Z(e){return(null==e?ie():i(e)?a(e)?e.entrySeq():e:le(e)).toSetSeq()}B.prototype.toString=function(){return"[Iterator]"},B.KEYS=T,B.VALUES=R,B.ENTRIES=M,B.prototype.inspect=B.prototype.toSource=function(){return this.toString()},B.prototype[L]=function(){return this},t(K,n),K.of=function(){return K(arguments)},K.prototype.toSeq=function(){return this},K.prototype.toString=function(){return this.__toString("Seq {","}")},K.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},K.prototype.__iterate=function(e,t){return pe(this,e,t,!0)},K.prototype.__iterator=function(e,t){return he(this,e,t,!0)},t(H,K),H.prototype.toKeyedSeq=function(){return this},t(G,K),G.of=function(){return G(arguments)},G.prototype.toIndexedSeq=function(){return this},G.prototype.toString=function(){return this.__toString("Seq [","]")},G.prototype.__iterate=function(e,t){return pe(this,e,t,!1)},G.prototype.__iterator=function(e,t){return he(this,e,t,!1)},t(Z,K),Z.of=function(){return Z(arguments)},Z.prototype.toSetSeq=function(){return this},K.isSeq=se,K.Keyed=H,K.Set=Z,K.Indexed=G;var Y,X,Q,ee="@@__IMMUTABLE_SEQ__@@";function te(e){this._array=e,this.size=e.length}function ne(e){var t=Object.keys(e);this._object=e,this._keys=t,this.size=t.length}function re(e){this._iterable=e,this.size=e.length||e.size}function oe(e){this._iterator=e,this._iteratorCache=[]}function se(e){return!(!e||!e[ee])}function ie(){return Y||(Y=new te([]))}function ae(e){var t=Array.isArray(e)?new te(e).fromEntrySeq():z(e)?new oe(e).fromEntrySeq():U(e)?new re(e).fromEntrySeq():"object"==typeof e?new ne(e):void 0;if(!t)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+e);return t}function le(e){var t=ue(e);if(!t)throw new TypeError("Expected Array or iterable object of values: "+e);return t}function ce(e){var t=ue(e)||"object"==typeof e&&new ne(e);if(!t)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+e);return t}function ue(e){return J(e)?new te(e):z(e)?new oe(e):U(e)?new re(e):void 0}function pe(e,t,n,r){var o=e._cache;if(o){for(var s=o.length-1,i=0;i<=s;i++){var a=o[n?s-i:i];if(!1===t(a[1],r?a[0]:i,e))return i+1}return i}return e.__iterateUncached(t,n)}function he(e,t,n,r){var o=e._cache;if(o){var s=o.length-1,i=0;return new B((function(){var e=o[n?s-i:i];return i++>s?q():$(t,r?e[0]:i-1,e[1])}))}return e.__iteratorUncached(t,n)}function fe(e,t){return t?de(t,e,"",{"":e}):me(e)}function de(e,t,n,r){return Array.isArray(t)?e.call(r,n,G(t).map((function(n,r){return de(e,n,r,t)}))):ge(t)?e.call(r,n,H(t).map((function(n,r){return de(e,n,r,t)}))):t}function me(e){return Array.isArray(e)?G(e).map(me).toList():ge(e)?H(e).map(me).toMap():e}function ge(e){return e&&(e.constructor===Object||void 0===e.constructor)}function ye(e,t){if(e===t||e!=e&&t!=t)return!0;if(!e||!t)return!1;if("function"==typeof e.valueOf&&"function"==typeof t.valueOf){if((e=e.valueOf())===(t=t.valueOf())||e!=e&&t!=t)return!0;if(!e||!t)return!1}return!("function"!=typeof e.equals||"function"!=typeof t.equals||!e.equals(t))}function ve(e,t){if(e===t)return!0;if(!i(t)||void 0!==e.size&&void 0!==t.size&&e.size!==t.size||void 0!==e.__hash&&void 0!==t.__hash&&e.__hash!==t.__hash||a(e)!==a(t)||l(e)!==l(t)||u(e)!==u(t))return!1;if(0===e.size&&0===t.size)return!0;var n=!c(e);if(u(e)){var r=e.entries();return t.every((function(e,t){var o=r.next().value;return o&&ye(o[1],e)&&(n||ye(o[0],t))}))&&r.next().done}var o=!1;if(void 0===e.size)if(void 0===t.size)"function"==typeof e.cacheResult&&e.cacheResult();else{o=!0;var s=e;e=t,t=s}var p=!0,h=t.__iterate((function(t,r){if(n?!e.has(t):o?!ye(t,e.get(r,b)):!ye(e.get(r,b),t))return p=!1,!1}));return p&&e.size===h}function be(e,t){if(!(this instanceof be))return new be(e,t);if(this._value=e,this.size=void 0===t?1/0:Math.max(0,t),0===this.size){if(X)return X;X=this}}function we(e,t){if(!e)throw new Error(t)}function Ee(e,t,n){if(!(this instanceof Ee))return new Ee(e,t,n);if(we(0!==n,"Cannot step a Range by 0"),e=e||0,void 0===t&&(t=1/0),n=void 0===n?1:Math.abs(n),tr?q():$(e,o,n[t?r-o++:o++])}))},t(ne,H),ne.prototype.get=function(e,t){return void 0===t||this.has(e)?this._object[e]:t},ne.prototype.has=function(e){return this._object.hasOwnProperty(e)},ne.prototype.__iterate=function(e,t){for(var n=this._object,r=this._keys,o=r.length-1,s=0;s<=o;s++){var i=r[t?o-s:s];if(!1===e(n[i],i,this))return s+1}return s},ne.prototype.__iterator=function(e,t){var n=this._object,r=this._keys,o=r.length-1,s=0;return new B((function(){var i=r[t?o-s:s];return s++>o?q():$(e,i,n[i])}))},ne.prototype[d]=!0,t(re,G),re.prototype.__iterateUncached=function(e,t){if(t)return this.cacheResult().__iterate(e,t);var n=V(this._iterable),r=0;if(z(n))for(var o;!(o=n.next()).done&&!1!==e(o.value,r++,this););return r},re.prototype.__iteratorUncached=function(e,t){if(t)return this.cacheResult().__iterator(e,t);var n=V(this._iterable);if(!z(n))return new B(q);var r=0;return new B((function(){var t=n.next();return t.done?t:$(e,r++,t.value)}))},t(oe,G),oe.prototype.__iterateUncached=function(e,t){if(t)return this.cacheResult().__iterate(e,t);for(var n,r=this._iterator,o=this._iteratorCache,s=0;s=r.length){var t=n.next();if(t.done)return t;r[o]=t.value}return $(e,o,r[o++])}))},t(be,G),be.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},be.prototype.get=function(e,t){return this.has(e)?this._value:t},be.prototype.includes=function(e){return ye(this._value,e)},be.prototype.slice=function(e,t){var n=this.size;return C(e,t,n)?this:new be(this._value,N(t,n)-P(e,n))},be.prototype.reverse=function(){return this},be.prototype.indexOf=function(e){return ye(this._value,e)?0:-1},be.prototype.lastIndexOf=function(e){return ye(this._value,e)?this.size:-1},be.prototype.__iterate=function(e,t){for(var n=0;n=0&&t=0&&nn?q():$(e,s++,i)}))},Ee.prototype.equals=function(e){return e instanceof Ee?this._start===e._start&&this._end===e._end&&this._step===e._step:ve(this,e)},t(xe,n),t(Se,xe),t(_e,xe),t(je,xe),xe.Keyed=Se,xe.Indexed=_e,xe.Set=je;var Oe="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function(e,t){var n=65535&(e|=0),r=65535&(t|=0);return n*r+((e>>>16)*r+n*(t>>>16)<<16>>>0)|0};function ke(e){return e>>>1&1073741824|3221225471&e}function Ae(e){if(!1===e||null==e)return 0;if("function"==typeof e.valueOf&&(!1===(e=e.valueOf())||null==e))return 0;if(!0===e)return 1;var t=typeof e;if("number"===t){if(e!=e||e===1/0)return 0;var n=0|e;for(n!==e&&(n^=4294967295*e);e>4294967295;)n^=e/=4294967295;return ke(n)}if("string"===t)return e.length>Be?Ce(e):Pe(e);if("function"==typeof e.hashCode)return e.hashCode();if("object"===t)return Ne(e);if("function"==typeof e.toString)return Pe(e.toString());throw new Error("Value type "+t+" cannot be hashed.")}function Ce(e){var t=Ue[e];return void 0===t&&(t=Pe(e),qe===$e&&(qe=0,Ue={}),qe++,Ue[e]=t),t}function Pe(e){for(var t=0,n=0;n0)switch(e.nodeType){case 1:return e.uniqueID;case 9:return e.documentElement&&e.documentElement.uniqueID}}var Me,De="function"==typeof WeakMap;De&&(Me=new WeakMap);var Fe=0,Le="__immutablehash__";"function"==typeof Symbol&&(Le=Symbol(Le));var Be=16,$e=255,qe=0,Ue={};function ze(e){we(e!==1/0,"Cannot perform this action with an infinite size.")}function Ve(e){return null==e?ot():We(e)&&!u(e)?e:ot().withMutations((function(t){var n=r(e);ze(n.size),n.forEach((function(e,n){return t.set(n,e)}))}))}function We(e){return!(!e||!e[Ke])}t(Ve,Se),Ve.of=function(){var t=e.call(arguments,0);return ot().withMutations((function(e){for(var n=0;n=t.length)throw new Error("Missing value for key: "+t[n]);e.set(t[n],t[n+1])}}))},Ve.prototype.toString=function(){return this.__toString("Map {","}")},Ve.prototype.get=function(e,t){return this._root?this._root.get(0,void 0,e,t):t},Ve.prototype.set=function(e,t){return st(this,e,t)},Ve.prototype.setIn=function(e,t){return this.updateIn(e,b,(function(){return t}))},Ve.prototype.remove=function(e){return st(this,e,b)},Ve.prototype.deleteIn=function(e){return this.updateIn(e,(function(){return b}))},Ve.prototype.update=function(e,t,n){return 1===arguments.length?e(this):this.updateIn([e],t,n)},Ve.prototype.updateIn=function(e,t,n){n||(n=t,t=void 0);var r=gt(this,xn(e),t,n);return r===b?void 0:r},Ve.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):ot()},Ve.prototype.merge=function(){return ht(this,void 0,arguments)},Ve.prototype.mergeWith=function(t){return ht(this,t,e.call(arguments,1))},Ve.prototype.mergeIn=function(t){var n=e.call(arguments,1);return this.updateIn(t,ot(),(function(e){return"function"==typeof e.merge?e.merge.apply(e,n):n[n.length-1]}))},Ve.prototype.mergeDeep=function(){return ht(this,ft,arguments)},Ve.prototype.mergeDeepWith=function(t){var n=e.call(arguments,1);return ht(this,dt(t),n)},Ve.prototype.mergeDeepIn=function(t){var n=e.call(arguments,1);return this.updateIn(t,ot(),(function(e){return"function"==typeof e.mergeDeep?e.mergeDeep.apply(e,n):n[n.length-1]}))},Ve.prototype.sort=function(e){return Ut(pn(this,e))},Ve.prototype.sortBy=function(e,t){return Ut(pn(this,t,e))},Ve.prototype.withMutations=function(e){var t=this.asMutable();return e(t),t.wasAltered()?t.__ensureOwner(this.__ownerID):this},Ve.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new _)},Ve.prototype.asImmutable=function(){return this.__ensureOwner()},Ve.prototype.wasAltered=function(){return this.__altered},Ve.prototype.__iterator=function(e,t){return new et(this,e,t)},Ve.prototype.__iterate=function(e,t){var n=this,r=0;return this._root&&this._root.iterate((function(t){return r++,e(t[1],t[0],n)}),t),r},Ve.prototype.__ensureOwner=function(e){return e===this.__ownerID?this:e?rt(this.size,this._root,e,this.__hash):(this.__ownerID=e,this.__altered=!1,this)},Ve.isMap=We;var Je,Ke="@@__IMMUTABLE_MAP__@@",He=Ve.prototype;function Ge(e,t){this.ownerID=e,this.entries=t}function Ze(e,t,n){this.ownerID=e,this.bitmap=t,this.nodes=n}function Ye(e,t,n){this.ownerID=e,this.count=t,this.nodes=n}function Xe(e,t,n){this.ownerID=e,this.keyHash=t,this.entries=n}function Qe(e,t,n){this.ownerID=e,this.keyHash=t,this.entry=n}function et(e,t,n){this._type=t,this._reverse=n,this._stack=e._root&&nt(e._root)}function tt(e,t){return $(e,t[0],t[1])}function nt(e,t){return{node:e,index:0,__prev:t}}function rt(e,t,n,r){var o=Object.create(He);return o.size=e,o._root=t,o.__ownerID=n,o.__hash=r,o.__altered=!1,o}function ot(){return Je||(Je=rt(0))}function st(e,t,n){var r,o;if(e._root){var s=x(w),i=x(E);if(r=it(e._root,e.__ownerID,0,void 0,t,n,s,i),!i.value)return e;o=e.size+(s.value?n===b?-1:1:0)}else{if(n===b)return e;o=1,r=new Ge(e.__ownerID,[[t,n]])}return e.__ownerID?(e.size=o,e._root=r,e.__hash=void 0,e.__altered=!0,e):r?rt(o,r):ot()}function it(e,t,n,r,o,s,i,a){return e?e.update(t,n,r,o,s,i,a):s===b?e:(S(a),S(i),new Qe(t,r,[o,s]))}function at(e){return e.constructor===Qe||e.constructor===Xe}function lt(e,t,n,r,o){if(e.keyHash===r)return new Xe(t,r,[e.entry,o]);var s,i=(0===n?e.keyHash:e.keyHash>>>n)&v,a=(0===n?r:r>>>n)&v;return new Ze(t,1<>>=1)i[a]=1&n?t[s++]:void 0;return i[r]=o,new Ye(e,s+1,i)}function ht(e,t,n){for(var o=[],s=0;s>1&1431655765))+(e>>2&858993459))+(e>>4)&252645135,e+=e>>8,127&(e+=e>>16)}function vt(e,t,n,r){var o=r?e:j(e);return o[t]=n,o}function bt(e,t,n,r){var o=e.length+1;if(r&&t+1===o)return e[t]=n,e;for(var s=new Array(o),i=0,a=0;a=Et)return ct(e,l,r,o);var h=e&&e===this.ownerID,f=h?l:j(l);return p?a?c===u-1?f.pop():f[c]=f.pop():f[c]=[r,o]:f.push([r,o]),h?(this.entries=f,this):new Ge(e,f)}},Ze.prototype.get=function(e,t,n,r){void 0===t&&(t=Ae(n));var o=1<<((0===e?t:t>>>e)&v),s=this.bitmap;return 0==(s&o)?r:this.nodes[yt(s&o-1)].get(e+g,t,n,r)},Ze.prototype.update=function(e,t,n,r,o,s,i){void 0===n&&(n=Ae(r));var a=(0===t?n:n>>>t)&v,l=1<=xt)return pt(e,h,c,a,d);if(u&&!d&&2===h.length&&at(h[1^p]))return h[1^p];if(u&&d&&1===h.length&&at(d))return d;var m=e&&e===this.ownerID,y=u?d?c:c^l:c|l,w=u?d?vt(h,p,d,m):wt(h,p,m):bt(h,p,d,m);return m?(this.bitmap=y,this.nodes=w,this):new Ze(e,y,w)},Ye.prototype.get=function(e,t,n,r){void 0===t&&(t=Ae(n));var o=(0===e?t:t>>>e)&v,s=this.nodes[o];return s?s.get(e+g,t,n,r):r},Ye.prototype.update=function(e,t,n,r,o,s,i){void 0===n&&(n=Ae(r));var a=(0===t?n:n>>>t)&v,l=o===b,c=this.nodes,u=c[a];if(l&&!u)return this;var p=it(u,e,t+g,n,r,o,s,i);if(p===u)return this;var h=this.count;if(u){if(!p&&--h0&&r=0&&e>>t&v;if(r>=this.array.length)return new At([],e);var o,s=0===r;if(t>0){var i=this.array[r];if((o=i&&i.removeBefore(e,t-g,n))===i&&s)return this}if(s&&!o)return this;var a=Ft(this,e);if(!s)for(var l=0;l>>t&v;if(o>=this.array.length)return this;if(t>0){var s=this.array[o];if((r=s&&s.removeAfter(e,t-g,n))===s&&o===this.array.length-1)return this}var i=Ft(this,e);return i.array.splice(o+1),r&&(i.array[o]=r),i};var Ct,Pt,Nt={};function It(e,t){var n=e._origin,r=e._capacity,o=qt(r),s=e._tail;return i(e._root,e._level,0);function i(e,t,n){return 0===t?a(e,n):l(e,t,n)}function a(e,i){var a=i===o?s&&s.array:e&&e.array,l=i>n?0:n-i,c=r-i;return c>y&&(c=y),function(){if(l===c)return Nt;var e=t?--c:l++;return a&&a[e]}}function l(e,o,s){var a,l=e&&e.array,c=s>n?0:n-s>>o,u=1+(r-s>>o);return u>y&&(u=y),function(){for(;;){if(a){var e=a();if(e!==Nt)return e;a=null}if(c===u)return Nt;var n=t?--u:c++;a=i(l&&l[n],o-g,s+(n<=e.size||t<0)return e.withMutations((function(e){t<0?Bt(e,t).set(0,n):Bt(e,0,t+1).set(t,n)}));t+=e._origin;var r=e._tail,o=e._root,s=x(E);return t>=qt(e._capacity)?r=Dt(r,e.__ownerID,0,t,n,s):o=Dt(o,e.__ownerID,e._level,t,n,s),s.value?e.__ownerID?(e._root=o,e._tail=r,e.__hash=void 0,e.__altered=!0,e):Tt(e._origin,e._capacity,e._level,o,r):e}function Dt(e,t,n,r,o,s){var i,a=r>>>n&v,l=e&&a0){var c=e&&e.array[a],u=Dt(c,t,n-g,r,o,s);return u===c?e:((i=Ft(e,t)).array[a]=u,i)}return l&&e.array[a]===o?e:(S(s),i=Ft(e,t),void 0===o&&a===i.array.length-1?i.array.pop():i.array[a]=o,i)}function Ft(e,t){return t&&e&&t===e.ownerID?e:new At(e?e.array.slice():[],t)}function Lt(e,t){if(t>=qt(e._capacity))return e._tail;if(t<1<0;)n=n.array[t>>>r&v],r-=g;return n}}function Bt(e,t,n){void 0!==t&&(t|=0),void 0!==n&&(n|=0);var r=e.__ownerID||new _,o=e._origin,s=e._capacity,i=o+t,a=void 0===n?s:n<0?s+n:o+n;if(i===o&&a===s)return e;if(i>=a)return e.clear();for(var l=e._level,c=e._root,u=0;i+u<0;)c=new At(c&&c.array.length?[void 0,c]:[],r),u+=1<<(l+=g);u&&(i+=u,o+=u,a+=u,s+=u);for(var p=qt(s),h=qt(a);h>=1<p?new At([],r):f;if(f&&h>p&&ig;y-=g){var b=p>>>y&v;m=m.array[b]=Ft(m.array[b],r)}m.array[p>>>g&v]=f}if(a=h)i-=h,a-=h,l=g,c=null,d=d&&d.removeBefore(r,0,i);else if(i>o||h>>l&v;if(w!==h>>>l&v)break;w&&(u+=(1<o&&(c=c.removeBefore(r,l,i-u)),c&&hs&&(s=c.size),i(l)||(c=c.map((function(e){return fe(e)}))),r.push(c)}return s>e.size&&(e=e.setSize(s)),mt(e,t,r)}function qt(e){return e>>g<=y&&i.size>=2*s.size?(r=(o=i.filter((function(e,t){return void 0!==e&&a!==t}))).toKeyedSeq().map((function(e){return e[0]})).flip().toMap(),e.__ownerID&&(r.__ownerID=o.__ownerID=e.__ownerID)):(r=s.remove(t),o=a===i.size-1?i.pop():i.set(a,void 0))}else if(l){if(n===i.get(a)[1])return e;r=s,o=i.set(a,[t,n])}else r=s.set(t,i.size),o=i.set(i.size,[t,n]);return e.__ownerID?(e.size=r.size,e._map=r,e._list=o,e.__hash=void 0,e):Vt(r,o)}function Kt(e,t){this._iter=e,this._useKeys=t,this.size=e.size}function Ht(e){this._iter=e,this.size=e.size}function Gt(e){this._iter=e,this.size=e.size}function Zt(e){this._iter=e,this.size=e.size}function Yt(e){var t=bn(e);return t._iter=e,t.size=e.size,t.flip=function(){return e},t.reverse=function(){var t=e.reverse.apply(this);return t.flip=function(){return e.reverse()},t},t.has=function(t){return e.includes(t)},t.includes=function(t){return e.has(t)},t.cacheResult=wn,t.__iterateUncached=function(t,n){var r=this;return e.__iterate((function(e,n){return!1!==t(n,e,r)}),n)},t.__iteratorUncached=function(t,n){if(t===M){var r=e.__iterator(t,n);return new B((function(){var e=r.next();if(!e.done){var t=e.value[0];e.value[0]=e.value[1],e.value[1]=t}return e}))}return e.__iterator(t===R?T:R,n)},t}function Xt(e,t,n){var r=bn(e);return r.size=e.size,r.has=function(t){return e.has(t)},r.get=function(r,o){var s=e.get(r,b);return s===b?o:t.call(n,s,r,e)},r.__iterateUncached=function(r,o){var s=this;return e.__iterate((function(e,o,i){return!1!==r(t.call(n,e,o,i),o,s)}),o)},r.__iteratorUncached=function(r,o){var s=e.__iterator(M,o);return new B((function(){var o=s.next();if(o.done)return o;var i=o.value,a=i[0];return $(r,a,t.call(n,i[1],a,e),o)}))},r}function Qt(e,t){var n=bn(e);return n._iter=e,n.size=e.size,n.reverse=function(){return e},e.flip&&(n.flip=function(){var t=Yt(e);return t.reverse=function(){return e.flip()},t}),n.get=function(n,r){return e.get(t?n:-1-n,r)},n.has=function(n){return e.has(t?n:-1-n)},n.includes=function(t){return e.includes(t)},n.cacheResult=wn,n.__iterate=function(t,n){var r=this;return e.__iterate((function(e,n){return t(e,n,r)}),!n)},n.__iterator=function(t,n){return e.__iterator(t,!n)},n}function en(e,t,n,r){var o=bn(e);return r&&(o.has=function(r){var o=e.get(r,b);return o!==b&&!!t.call(n,o,r,e)},o.get=function(r,o){var s=e.get(r,b);return s!==b&&t.call(n,s,r,e)?s:o}),o.__iterateUncached=function(o,s){var i=this,a=0;return e.__iterate((function(e,s,l){if(t.call(n,e,s,l))return a++,o(e,r?s:a-1,i)}),s),a},o.__iteratorUncached=function(o,s){var i=e.__iterator(M,s),a=0;return new B((function(){for(;;){var s=i.next();if(s.done)return s;var l=s.value,c=l[0],u=l[1];if(t.call(n,u,c,e))return $(o,r?c:a++,u,s)}}))},o}function tn(e,t,n){var r=Ve().asMutable();return e.__iterate((function(o,s){r.update(t.call(n,o,s,e),0,(function(e){return e+1}))})),r.asImmutable()}function nn(e,t,n){var r=a(e),o=(u(e)?Ut():Ve()).asMutable();e.__iterate((function(s,i){o.update(t.call(n,s,i,e),(function(e){return(e=e||[]).push(r?[i,s]:s),e}))}));var s=vn(e);return o.map((function(t){return mn(e,s(t))}))}function rn(e,t,n,r){var o=e.size;if(void 0!==t&&(t|=0),void 0!==n&&(n===1/0?n=o:n|=0),C(t,n,o))return e;var s=P(t,o),i=N(n,o);if(s!=s||i!=i)return rn(e.toSeq().cacheResult(),t,n,r);var a,l=i-s;l==l&&(a=l<0?0:l);var c=bn(e);return c.size=0===a?a:e.size&&a||void 0,!r&&se(e)&&a>=0&&(c.get=function(t,n){return(t=k(this,t))>=0&&ta)return q();var e=o.next();return r||t===R?e:$(t,l-1,t===T?void 0:e.value[1],e)}))},c}function on(e,t,n){var r=bn(e);return r.__iterateUncached=function(r,o){var s=this;if(o)return this.cacheResult().__iterate(r,o);var i=0;return e.__iterate((function(e,o,a){return t.call(n,e,o,a)&&++i&&r(e,o,s)})),i},r.__iteratorUncached=function(r,o){var s=this;if(o)return this.cacheResult().__iterator(r,o);var i=e.__iterator(M,o),a=!0;return new B((function(){if(!a)return q();var e=i.next();if(e.done)return e;var o=e.value,l=o[0],c=o[1];return t.call(n,c,l,s)?r===M?e:$(r,l,c,e):(a=!1,q())}))},r}function sn(e,t,n,r){var o=bn(e);return o.__iterateUncached=function(o,s){var i=this;if(s)return this.cacheResult().__iterate(o,s);var a=!0,l=0;return e.__iterate((function(e,s,c){if(!a||!(a=t.call(n,e,s,c)))return l++,o(e,r?s:l-1,i)})),l},o.__iteratorUncached=function(o,s){var i=this;if(s)return this.cacheResult().__iterator(o,s);var a=e.__iterator(M,s),l=!0,c=0;return new B((function(){var e,s,u;do{if((e=a.next()).done)return r||o===R?e:$(o,c++,o===T?void 0:e.value[1],e);var p=e.value;s=p[0],u=p[1],l&&(l=t.call(n,u,s,i))}while(l);return o===M?e:$(o,s,u,e)}))},o}function an(e,t){var n=a(e),o=[e].concat(t).map((function(e){return i(e)?n&&(e=r(e)):e=n?ae(e):le(Array.isArray(e)?e:[e]),e})).filter((function(e){return 0!==e.size}));if(0===o.length)return e;if(1===o.length){var s=o[0];if(s===e||n&&a(s)||l(e)&&l(s))return s}var c=new te(o);return n?c=c.toKeyedSeq():l(e)||(c=c.toSetSeq()),(c=c.flatten(!0)).size=o.reduce((function(e,t){if(void 0!==e){var n=t.size;if(void 0!==n)return e+n}}),0),c}function ln(e,t,n){var r=bn(e);return r.__iterateUncached=function(r,o){var s=0,a=!1;function l(e,c){var u=this;e.__iterate((function(e,o){return(!t||c0}function dn(e,t,r){var o=bn(e);return o.size=new te(r).map((function(e){return e.size})).min(),o.__iterate=function(e,t){for(var n,r=this.__iterator(R,t),o=0;!(n=r.next()).done&&!1!==e(n.value,o++,this););return o},o.__iteratorUncached=function(e,o){var s=r.map((function(e){return e=n(e),V(o?e.reverse():e)})),i=0,a=!1;return new B((function(){var n;return a||(n=s.map((function(e){return e.next()})),a=n.some((function(e){return e.done}))),a?q():$(e,i++,t.apply(null,n.map((function(e){return e.value}))))}))},o}function mn(e,t){return se(e)?t:e.constructor(t)}function gn(e){if(e!==Object(e))throw new TypeError("Expected [K, V] tuple: "+e)}function yn(e){return ze(e.size),O(e)}function vn(e){return a(e)?r:l(e)?o:s}function bn(e){return Object.create((a(e)?H:l(e)?G:Z).prototype)}function wn(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):K.prototype.cacheResult.call(this)}function En(e,t){return e>t?1:e=0;n--)t={value:arguments[n],next:t};return this.__ownerID?(this.size=e,this._head=t,this.__hash=void 0,this.__altered=!0,this):Hn(e,t)},zn.prototype.pushAll=function(e){if(0===(e=o(e)).size)return this;ze(e.size);var t=this.size,n=this._head;return e.reverse().forEach((function(e){t++,n={value:e,next:n}})),this.__ownerID?(this.size=t,this._head=n,this.__hash=void 0,this.__altered=!0,this):Hn(t,n)},zn.prototype.pop=function(){return this.slice(1)},zn.prototype.unshift=function(){return this.push.apply(this,arguments)},zn.prototype.unshiftAll=function(e){return this.pushAll(e)},zn.prototype.shift=function(){return this.pop.apply(this,arguments)},zn.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Gn()},zn.prototype.slice=function(e,t){if(C(e,t,this.size))return this;var n=P(e,this.size);if(N(t,this.size)!==this.size)return _e.prototype.slice.call(this,e,t);for(var r=this.size-n,o=this._head;n--;)o=o.next;return this.__ownerID?(this.size=r,this._head=o,this.__hash=void 0,this.__altered=!0,this):Hn(r,o)},zn.prototype.__ensureOwner=function(e){return e===this.__ownerID?this:e?Hn(this.size,this._head,e,this.__hash):(this.__ownerID=e,this.__altered=!1,this)},zn.prototype.__iterate=function(e,t){if(t)return this.reverse().__iterate(e);for(var n=0,r=this._head;r&&!1!==e(r.value,n++,this);)r=r.next;return n},zn.prototype.__iterator=function(e,t){if(t)return this.reverse().__iterator(e);var n=0,r=this._head;return new B((function(){if(r){var t=r.value;return r=r.next,$(e,n++,t)}return q()}))},zn.isStack=Vn;var Wn,Jn="@@__IMMUTABLE_STACK__@@",Kn=zn.prototype;function Hn(e,t,n,r){var o=Object.create(Kn);return o.size=e,o._head=t,o.__ownerID=n,o.__hash=r,o.__altered=!1,o}function Gn(){return Wn||(Wn=Hn(0))}function Zn(e,t){var n=function(n){e.prototype[n]=t[n]};return Object.keys(t).forEach(n),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(t).forEach(n),e}Kn[Jn]=!0,Kn.withMutations=He.withMutations,Kn.asMutable=He.asMutable,Kn.asImmutable=He.asImmutable,Kn.wasAltered=He.wasAltered,n.Iterator=B,Zn(n,{toArray:function(){ze(this.size);var e=new Array(this.size||0);return this.valueSeq().__iterate((function(t,n){e[n]=t})),e},toIndexedSeq:function(){return new Ht(this)},toJS:function(){return this.toSeq().map((function(e){return e&&"function"==typeof e.toJS?e.toJS():e})).__toJS()},toJSON:function(){return this.toSeq().map((function(e){return e&&"function"==typeof e.toJSON?e.toJSON():e})).__toJS()},toKeyedSeq:function(){return new Kt(this,!0)},toMap:function(){return Ve(this.toKeyedSeq())},toObject:function(){ze(this.size);var e={};return this.__iterate((function(t,n){e[n]=t})),e},toOrderedMap:function(){return Ut(this.toKeyedSeq())},toOrderedSet:function(){return Fn(a(this)?this.valueSeq():this)},toSet:function(){return Cn(a(this)?this.valueSeq():this)},toSetSeq:function(){return new Gt(this)},toSeq:function(){return l(this)?this.toIndexedSeq():a(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return zn(a(this)?this.valueSeq():this)},toList:function(){return _t(a(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(e,t){return 0===this.size?e+t:e+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+t},concat:function(){return mn(this,an(this,e.call(arguments,0)))},includes:function(e){return this.some((function(t){return ye(t,e)}))},entries:function(){return this.__iterator(M)},every:function(e,t){ze(this.size);var n=!0;return this.__iterate((function(r,o,s){if(!e.call(t,r,o,s))return n=!1,!1})),n},filter:function(e,t){return mn(this,en(this,e,t,!0))},find:function(e,t,n){var r=this.findEntry(e,t);return r?r[1]:n},forEach:function(e,t){return ze(this.size),this.__iterate(t?e.bind(t):e)},join:function(e){ze(this.size),e=void 0!==e?""+e:",";var t="",n=!0;return this.__iterate((function(r){n?n=!1:t+=e,t+=null!=r?r.toString():""})),t},keys:function(){return this.__iterator(T)},map:function(e,t){return mn(this,Xt(this,e,t))},reduce:function(e,t,n){var r,o;return ze(this.size),arguments.length<2?o=!0:r=t,this.__iterate((function(t,s,i){o?(o=!1,r=t):r=e.call(n,r,t,s,i)})),r},reduceRight:function(e,t,n){var r=this.toKeyedSeq().reverse();return r.reduce.apply(r,arguments)},reverse:function(){return mn(this,Qt(this,!0))},slice:function(e,t){return mn(this,rn(this,e,t,!0))},some:function(e,t){return!this.every(tr(e),t)},sort:function(e){return mn(this,pn(this,e))},values:function(){return this.__iterator(R)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some((function(){return!0}))},count:function(e,t){return O(e?this.toSeq().filter(e,t):this)},countBy:function(e,t){return tn(this,e,t)},equals:function(e){return ve(this,e)},entrySeq:function(){var e=this;if(e._cache)return new te(e._cache);var t=e.toSeq().map(er).toIndexedSeq();return t.fromEntrySeq=function(){return e.toSeq()},t},filterNot:function(e,t){return this.filter(tr(e),t)},findEntry:function(e,t,n){var r=n;return this.__iterate((function(n,o,s){if(e.call(t,n,o,s))return r=[o,n],!1})),r},findKey:function(e,t){var n=this.findEntry(e,t);return n&&n[0]},findLast:function(e,t,n){return this.toKeyedSeq().reverse().find(e,t,n)},findLastEntry:function(e,t,n){return this.toKeyedSeq().reverse().findEntry(e,t,n)},findLastKey:function(e,t){return this.toKeyedSeq().reverse().findKey(e,t)},first:function(){return this.find(A)},flatMap:function(e,t){return mn(this,cn(this,e,t))},flatten:function(e){return mn(this,ln(this,e,!0))},fromEntrySeq:function(){return new Zt(this)},get:function(e,t){return this.find((function(t,n){return ye(n,e)}),void 0,t)},getIn:function(e,t){for(var n,r=this,o=xn(e);!(n=o.next()).done;){var s=n.value;if((r=r&&r.get?r.get(s,b):b)===b)return t}return r},groupBy:function(e,t){return nn(this,e,t)},has:function(e){return this.get(e,b)!==b},hasIn:function(e){return this.getIn(e,b)!==b},isSubset:function(e){return e="function"==typeof e.includes?e:n(e),this.every((function(t){return e.includes(t)}))},isSuperset:function(e){return(e="function"==typeof e.isSubset?e:n(e)).isSubset(this)},keyOf:function(e){return this.findKey((function(t){return ye(t,e)}))},keySeq:function(){return this.toSeq().map(Qn).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},lastKeyOf:function(e){return this.toKeyedSeq().reverse().keyOf(e)},max:function(e){return hn(this,e)},maxBy:function(e,t){return hn(this,t,e)},min:function(e){return hn(this,e?nr(e):sr)},minBy:function(e,t){return hn(this,t?nr(t):sr,e)},rest:function(){return this.slice(1)},skip:function(e){return this.slice(Math.max(0,e))},skipLast:function(e){return mn(this,this.toSeq().reverse().skip(e).reverse())},skipWhile:function(e,t){return mn(this,sn(this,e,t,!0))},skipUntil:function(e,t){return this.skipWhile(tr(e),t)},sortBy:function(e,t){return mn(this,pn(this,t,e))},take:function(e){return this.slice(0,Math.max(0,e))},takeLast:function(e){return mn(this,this.toSeq().reverse().take(e).reverse())},takeWhile:function(e,t){return mn(this,on(this,e,t))},takeUntil:function(e,t){return this.takeWhile(tr(e),t)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=ir(this))}});var Yn=n.prototype;Yn[p]=!0,Yn[L]=Yn.values,Yn.__toJS=Yn.toArray,Yn.__toStringMapper=rr,Yn.inspect=Yn.toSource=function(){return this.toString()},Yn.chain=Yn.flatMap,Yn.contains=Yn.includes,Zn(r,{flip:function(){return mn(this,Yt(this))},mapEntries:function(e,t){var n=this,r=0;return mn(this,this.toSeq().map((function(o,s){return e.call(t,[s,o],r++,n)})).fromEntrySeq())},mapKeys:function(e,t){var n=this;return mn(this,this.toSeq().flip().map((function(r,o){return e.call(t,r,o,n)})).flip())}});var Xn=r.prototype;function Qn(e,t){return t}function er(e,t){return[t,e]}function tr(e){return function(){return!e.apply(this,arguments)}}function nr(e){return function(){return-e.apply(this,arguments)}}function rr(e){return"string"==typeof e?JSON.stringify(e):String(e)}function or(){return j(arguments)}function sr(e,t){return et?-1:0}function ir(e){if(e.size===1/0)return 0;var t=u(e),n=a(e),r=t?1:0;return ar(e.__iterate(n?t?function(e,t){r=31*r+lr(Ae(e),Ae(t))|0}:function(e,t){r=r+lr(Ae(e),Ae(t))|0}:t?function(e){r=31*r+Ae(e)|0}:function(e){r=r+Ae(e)|0}),r)}function ar(e,t){return t=Oe(t,3432918353),t=Oe(t<<15|t>>>-15,461845907),t=Oe(t<<13|t>>>-13,5),t=Oe((t=(t+3864292196|0)^e)^t>>>16,2246822507),t=ke((t=Oe(t^t>>>13,3266489909))^t>>>16)}function lr(e,t){return e^t+2654435769+(e<<6)+(e>>2)|0}return Xn[h]=!0,Xn[L]=Yn.entries,Xn.__toJS=Yn.toObject,Xn.__toStringMapper=function(e,t){return JSON.stringify(t)+": "+rr(e)},Zn(o,{toKeyedSeq:function(){return new Kt(this,!1)},filter:function(e,t){return mn(this,en(this,e,t,!1))},findIndex:function(e,t){var n=this.findEntry(e,t);return n?n[0]:-1},indexOf:function(e){var t=this.keyOf(e);return void 0===t?-1:t},lastIndexOf:function(e){var t=this.lastKeyOf(e);return void 0===t?-1:t},reverse:function(){return mn(this,Qt(this,!1))},slice:function(e,t){return mn(this,rn(this,e,t,!1))},splice:function(e,t){var n=arguments.length;if(t=Math.max(0|t,0),0===n||2===n&&!t)return this;e=P(e,e<0?this.count():this.size);var r=this.slice(0,e);return mn(this,1===n?r:r.concat(j(arguments,2),this.slice(e+t)))},findLastIndex:function(e,t){var n=this.findLastEntry(e,t);return n?n[0]:-1},first:function(){return this.get(0)},flatten:function(e){return mn(this,ln(this,e,!1))},get:function(e,t){return(e=k(this,e))<0||this.size===1/0||void 0!==this.size&&e>this.size?t:this.find((function(t,n){return n===e}),void 0,t)},has:function(e){return(e=k(this,e))>=0&&(void 0!==this.size?this.size===1/0||e{"function"==typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}},35823:e=>{e.exports=function(e,t,n,r){var o=new Blob(void 0!==r?[r,e]:[e],{type:n||"application/octet-stream"});if(void 0!==window.navigator.msSaveBlob)window.navigator.msSaveBlob(o,t);else{var s=window.URL&&window.URL.createObjectURL?window.URL.createObjectURL(o):window.webkitURL.createObjectURL(o),i=document.createElement("a");i.style.display="none",i.href=s,i.setAttribute("download",t),void 0===i.download&&i.setAttribute("target","_blank"),document.body.appendChild(i),i.click(),setTimeout((function(){document.body.removeChild(i),window.URL.revokeObjectURL(s)}),200)}}},91296:(e,t,n)=>{var r=NaN,o="[object Symbol]",s=/^\s+|\s+$/g,i=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt,u="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,p="object"==typeof self&&self&&self.Object===Object&&self,h=u||p||Function("return this")(),f=Object.prototype.toString,d=Math.max,m=Math.min,g=function(){return h.Date.now()};function y(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function v(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&f.call(e)==o}(e))return r;if(y(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=y(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(s,"");var n=a.test(e);return n||l.test(e)?c(e.slice(2),n?2:8):i.test(e)?r:+e}e.exports=function(e,t,n){var r,o,s,i,a,l,c=0,u=!1,p=!1,h=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function f(t){var n=r,s=o;return r=o=void 0,c=t,i=e.apply(s,n)}function b(e){var n=e-l;return void 0===l||n>=t||n<0||p&&e-c>=s}function w(){var e=g();if(b(e))return E(e);a=setTimeout(w,function(e){var n=t-(e-l);return p?m(n,s-(e-c)):n}(e))}function E(e){return a=void 0,h&&r?f(e):(r=o=void 0,i)}function x(){var e=g(),n=b(e);if(r=arguments,o=this,l=e,n){if(void 0===a)return function(e){return c=e,a=setTimeout(w,t),u?f(e):i}(l);if(p)return a=setTimeout(w,t),f(l)}return void 0===a&&(a=setTimeout(w,t)),i}return t=v(t)||0,y(n)&&(u=!!n.leading,s=(p="maxWait"in n)?d(v(n.maxWait)||0,t):s,h="trailing"in n?!!n.trailing:h),x.cancel=function(){void 0!==a&&clearTimeout(a),c=0,r=l=o=a=void 0},x.flush=function(){return void 0===a?i:E(g())},x}},18552:(e,t,n)=>{var r=n(10852)(n(55639),"DataView");e.exports=r},1989:(e,t,n)=>{var r=n(51789),o=n(80401),s=n(57667),i=n(21327),a=n(81866);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t{var r=n(3118),o=n(9435);function s(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}s.prototype=r(o.prototype),s.prototype.constructor=s,e.exports=s},38407:(e,t,n)=>{var r=n(27040),o=n(14125),s=n(82117),i=n(67518),a=n(54705);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t{var r=n(3118),o=n(9435);function s(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}s.prototype=r(o.prototype),s.prototype.constructor=s,e.exports=s},57071:(e,t,n)=>{var r=n(10852)(n(55639),"Map");e.exports=r},83369:(e,t,n)=>{var r=n(24785),o=n(11285),s=n(96e3),i=n(49916),a=n(95265);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t{var r=n(10852)(n(55639),"Promise");e.exports=r},58525:(e,t,n)=>{var r=n(10852)(n(55639),"Set");e.exports=r},88668:(e,t,n)=>{var r=n(83369),o=n(90619),s=n(72385);function i(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t{var r=n(38407),o=n(37465),s=n(63779),i=n(67599),a=n(44758),l=n(34309);function c(e){var t=this.__data__=new r(e);this.size=t.size}c.prototype.clear=o,c.prototype.delete=s,c.prototype.get=i,c.prototype.has=a,c.prototype.set=l,e.exports=c},62705:(e,t,n)=>{var r=n(55639).Symbol;e.exports=r},11149:(e,t,n)=>{var r=n(55639).Uint8Array;e.exports=r},70577:(e,t,n)=>{var r=n(10852)(n(55639),"WeakMap");e.exports=r},96874:e=>{e.exports=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}},77412:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,o=0,s=[];++n{var r=n(42118);e.exports=function(e,t){return!!(null==e?0:e.length)&&r(e,t,0)>-1}},14636:(e,t,n)=>{var r=n(22545),o=n(35694),s=n(1469),i=n(44144),a=n(65776),l=n(36719),c=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=s(e),u=!n&&o(e),p=!n&&!u&&i(e),h=!n&&!u&&!p&&l(e),f=n||u||p||h,d=f?r(e.length,String):[],m=d.length;for(var g in e)!t&&!c.call(e,g)||f&&("length"==g||p&&("offset"==g||"parent"==g)||h&&("buffer"==g||"byteLength"==g||"byteOffset"==g)||a(g,m))||d.push(g);return d}},29932:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,o=Array(r);++n{e.exports=function(e,t){for(var n=-1,r=t.length,o=e.length;++n{e.exports=function(e,t,n,r){var o=-1,s=null==e?0:e.length;for(r&&s&&(n=e[++o]);++o{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n{e.exports=function(e){return e.split("")}},49029:e=>{var t=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;e.exports=function(e){return e.match(t)||[]}},86556:(e,t,n)=>{var r=n(89465),o=n(77813);e.exports=function(e,t,n){(void 0!==n&&!o(e[t],n)||void 0===n&&!(t in e))&&r(e,t,n)}},34865:(e,t,n)=>{var r=n(89465),o=n(77813),s=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var i=e[t];s.call(e,t)&&o(i,n)&&(void 0!==n||t in e)||r(e,t,n)}},18470:(e,t,n)=>{var r=n(77813);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},44037:(e,t,n)=>{var r=n(98363),o=n(3674);e.exports=function(e,t){return e&&r(t,o(t),e)}},63886:(e,t,n)=>{var r=n(98363),o=n(81704);e.exports=function(e,t){return e&&r(t,o(t),e)}},89465:(e,t,n)=>{var r=n(38777);e.exports=function(e,t,n){"__proto__"==t&&r?r(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},85990:(e,t,n)=>{var r=n(46384),o=n(77412),s=n(34865),i=n(44037),a=n(63886),l=n(64626),c=n(278),u=n(18805),p=n(1911),h=n(58234),f=n(46904),d=n(98882),m=n(43824),g=n(29148),y=n(38517),v=n(1469),b=n(44144),w=n(56688),E=n(13218),x=n(72928),S=n(3674),_=n(81704),j="[object Arguments]",O="[object Function]",k="[object Object]",A={};A[j]=A["[object Array]"]=A["[object ArrayBuffer]"]=A["[object DataView]"]=A["[object Boolean]"]=A["[object Date]"]=A["[object Float32Array]"]=A["[object Float64Array]"]=A["[object Int8Array]"]=A["[object Int16Array]"]=A["[object Int32Array]"]=A["[object Map]"]=A["[object Number]"]=A[k]=A["[object RegExp]"]=A["[object Set]"]=A["[object String]"]=A["[object Symbol]"]=A["[object Uint8Array]"]=A["[object Uint8ClampedArray]"]=A["[object Uint16Array]"]=A["[object Uint32Array]"]=!0,A["[object Error]"]=A[O]=A["[object WeakMap]"]=!1,e.exports=function e(t,n,C,P,N,I){var T,R=1&n,M=2&n,D=4&n;if(C&&(T=N?C(t,P,N,I):C(t)),void 0!==T)return T;if(!E(t))return t;var F=v(t);if(F){if(T=m(t),!R)return c(t,T)}else{var L=d(t),B=L==O||"[object GeneratorFunction]"==L;if(b(t))return l(t,R);if(L==k||L==j||B&&!N){if(T=M||B?{}:y(t),!R)return M?p(t,a(T,t)):u(t,i(T,t))}else{if(!A[L])return N?t:{};T=g(t,L,R)}}I||(I=new r);var $=I.get(t);if($)return $;I.set(t,T),x(t)?t.forEach((function(r){T.add(e(r,n,C,r,t,I))})):w(t)&&t.forEach((function(r,o){T.set(o,e(r,n,C,o,t,I))}));var q=F?void 0:(D?M?f:h:M?_:S)(t);return o(q||t,(function(r,o){q&&(r=t[o=r]),s(T,o,e(r,n,C,o,t,I))})),T}},3118:(e,t,n)=>{var r=n(13218),o=Object.create,s=function(){function e(){}return function(t){if(!r(t))return{};if(o)return o(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();e.exports=s},89881:(e,t,n)=>{var r=n(47816),o=n(99291)(r);e.exports=o},41848:e=>{e.exports=function(e,t,n,r){for(var o=e.length,s=n+(r?1:-1);r?s--:++s{var r=n(62488),o=n(37285);e.exports=function e(t,n,s,i,a){var l=-1,c=t.length;for(s||(s=o),a||(a=[]);++l0&&s(u)?n>1?e(u,n-1,s,i,a):r(a,u):i||(a[a.length]=u)}return a}},28483:(e,t,n)=>{var r=n(25063)();e.exports=r},47816:(e,t,n)=>{var r=n(28483),o=n(3674);e.exports=function(e,t){return e&&r(e,t,o)}},97786:(e,t,n)=>{var r=n(71811),o=n(40327);e.exports=function(e,t){for(var n=0,s=(t=r(t,e)).length;null!=e&&n{var r=n(62488),o=n(1469);e.exports=function(e,t,n){var s=t(e);return o(e)?s:r(s,n(e))}},44239:(e,t,n)=>{var r=n(62705),o=n(89607),s=n(2333),i=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?o(e):s(e)}},13:e=>{e.exports=function(e,t){return null!=e&&t in Object(e)}},42118:(e,t,n)=>{var r=n(41848),o=n(62722),s=n(42351);e.exports=function(e,t,n){return t==t?s(e,t,n):r(e,o,n)}},9454:(e,t,n)=>{var r=n(44239),o=n(37005);e.exports=function(e){return o(e)&&"[object Arguments]"==r(e)}},90939:(e,t,n)=>{var r=n(2492),o=n(37005);e.exports=function e(t,n,s,i,a){return t===n||(null==t||null==n||!o(t)&&!o(n)?t!=t&&n!=n:r(t,n,s,i,e,a))}},2492:(e,t,n)=>{var r=n(46384),o=n(67114),s=n(18351),i=n(16096),a=n(98882),l=n(1469),c=n(44144),u=n(36719),p="[object Arguments]",h="[object Array]",f="[object Object]",d=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,m,g,y){var v=l(e),b=l(t),w=v?h:a(e),E=b?h:a(t),x=(w=w==p?f:w)==f,S=(E=E==p?f:E)==f,_=w==E;if(_&&c(e)){if(!c(t))return!1;v=!0,x=!1}if(_&&!x)return y||(y=new r),v||u(e)?o(e,t,n,m,g,y):s(e,t,w,n,m,g,y);if(!(1&n)){var j=x&&d.call(e,"__wrapped__"),O=S&&d.call(t,"__wrapped__");if(j||O){var k=j?e.value():e,A=O?t.value():t;return y||(y=new r),g(k,A,n,m,y)}}return!!_&&(y||(y=new r),i(e,t,n,m,g,y))}},25588:(e,t,n)=>{var r=n(98882),o=n(37005);e.exports=function(e){return o(e)&&"[object Map]"==r(e)}},2958:(e,t,n)=>{var r=n(46384),o=n(90939);e.exports=function(e,t,n,s){var i=n.length,a=i,l=!s;if(null==e)return!a;for(e=Object(e);i--;){var c=n[i];if(l&&c[2]?c[1]!==e[c[0]]:!(c[0]in e))return!1}for(;++i{e.exports=function(e){return e!=e}},28458:(e,t,n)=>{var r=n(23560),o=n(15346),s=n(13218),i=n(80346),a=/^\[object .+?Constructor\]$/,l=Function.prototype,c=Object.prototype,u=l.toString,p=c.hasOwnProperty,h=RegExp("^"+u.call(p).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!s(e)||o(e))&&(r(e)?h:a).test(i(e))}},29221:(e,t,n)=>{var r=n(98882),o=n(37005);e.exports=function(e){return o(e)&&"[object Set]"==r(e)}},38749:(e,t,n)=>{var r=n(44239),o=n(41780),s=n(37005),i={};i["[object Float32Array]"]=i["[object Float64Array]"]=i["[object Int8Array]"]=i["[object Int16Array]"]=i["[object Int32Array]"]=i["[object Uint8Array]"]=i["[object Uint8ClampedArray]"]=i["[object Uint16Array]"]=i["[object Uint32Array]"]=!0,i["[object Arguments]"]=i["[object Array]"]=i["[object ArrayBuffer]"]=i["[object Boolean]"]=i["[object DataView]"]=i["[object Date]"]=i["[object Error]"]=i["[object Function]"]=i["[object Map]"]=i["[object Number]"]=i["[object Object]"]=i["[object RegExp]"]=i["[object Set]"]=i["[object String]"]=i["[object WeakMap]"]=!1,e.exports=function(e){return s(e)&&o(e.length)&&!!i[r(e)]}},67206:(e,t,n)=>{var r=n(91573),o=n(16432),s=n(6557),i=n(1469),a=n(39601);e.exports=function(e){return"function"==typeof e?e:null==e?s:"object"==typeof e?i(e)?o(e[0],e[1]):r(e):a(e)}},280:(e,t,n)=>{var r=n(25726),o=n(86916),s=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return o(e);var t=[];for(var n in Object(e))s.call(e,n)&&"constructor"!=n&&t.push(n);return t}},10313:(e,t,n)=>{var r=n(13218),o=n(25726),s=n(33498),i=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return s(e);var t=o(e),n=[];for(var a in e)("constructor"!=a||!t&&i.call(e,a))&&n.push(a);return n}},9435:e=>{e.exports=function(){}},91573:(e,t,n)=>{var r=n(2958),o=n(1499),s=n(42634);e.exports=function(e){var t=o(e);return 1==t.length&&t[0][2]?s(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},16432:(e,t,n)=>{var r=n(90939),o=n(27361),s=n(79095),i=n(15403),a=n(89162),l=n(42634),c=n(40327);e.exports=function(e,t){return i(e)&&a(t)?l(c(e),t):function(n){var i=o(n,e);return void 0===i&&i===t?s(n,e):r(t,i,3)}}},42980:(e,t,n)=>{var r=n(46384),o=n(86556),s=n(28483),i=n(59783),a=n(13218),l=n(81704),c=n(36390);e.exports=function e(t,n,u,p,h){t!==n&&s(n,(function(s,l){if(h||(h=new r),a(s))i(t,n,l,u,e,p,h);else{var f=p?p(c(t,l),s,l+"",t,n,h):void 0;void 0===f&&(f=s),o(t,l,f)}}),l)}},59783:(e,t,n)=>{var r=n(86556),o=n(64626),s=n(77133),i=n(278),a=n(38517),l=n(35694),c=n(1469),u=n(29246),p=n(44144),h=n(23560),f=n(13218),d=n(68630),m=n(36719),g=n(36390),y=n(59881);e.exports=function(e,t,n,v,b,w,E){var x=g(e,n),S=g(t,n),_=E.get(S);if(_)r(e,n,_);else{var j=w?w(x,S,n+"",e,t,E):void 0,O=void 0===j;if(O){var k=c(S),A=!k&&p(S),C=!k&&!A&&m(S);j=S,k||A||C?c(x)?j=x:u(x)?j=i(x):A?(O=!1,j=o(S,!0)):C?(O=!1,j=s(S,!0)):j=[]:d(S)||l(S)?(j=x,l(x)?j=y(x):f(x)&&!h(x)||(j=a(S))):O=!1}O&&(E.set(S,j),b(j,S,v,w,E),E.delete(S)),r(e,n,j)}}},40371:e=>{e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},79152:(e,t,n)=>{var r=n(97786);e.exports=function(e){return function(t){return r(t,e)}}},18674:e=>{e.exports=function(e){return function(t){return null==e?void 0:e[t]}}},10107:e=>{e.exports=function(e,t,n,r,o){return o(e,(function(e,o,s){n=r?(r=!1,e):t(n,e,o,s)})),n}},5976:(e,t,n)=>{var r=n(6557),o=n(45357),s=n(30061);e.exports=function(e,t){return s(o(e,t,r),e+"")}},10611:(e,t,n)=>{var r=n(34865),o=n(71811),s=n(65776),i=n(13218),a=n(40327);e.exports=function(e,t,n,l){if(!i(e))return e;for(var c=-1,u=(t=o(t,e)).length,p=u-1,h=e;null!=h&&++c{var r=n(6557),o=n(89250),s=o?function(e,t){return o.set(e,t),e}:r;e.exports=s},56560:(e,t,n)=>{var r=n(75703),o=n(38777),s=n(6557),i=o?function(e,t){return o(e,"toString",{configurable:!0,enumerable:!1,value:r(t),writable:!0})}:s;e.exports=i},14259:e=>{e.exports=function(e,t,n){var r=-1,o=e.length;t<0&&(t=-t>o?0:o+t),(n=n>o?o:n)<0&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var s=Array(o);++r{var r=n(89881);e.exports=function(e,t){var n;return r(e,(function(e,r,o){return!(n=t(e,r,o))})),!!n}},22545:e=>{e.exports=function(e,t){for(var n=-1,r=Array(e);++n{var r=n(62705),o=n(29932),s=n(1469),i=n(33448),a=r?r.prototype:void 0,l=a?a.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(s(t))return o(t,e)+"";if(i(t))return l?l.call(t):"";var n=t+"";return"0"==n&&1/t==-Infinity?"-0":n}},27561:(e,t,n)=>{var r=n(67990),o=/^\s+/;e.exports=function(e){return e?e.slice(0,r(e)+1).replace(o,""):e}},7518:e=>{e.exports=function(e){return function(t){return e(t)}}},57406:(e,t,n)=>{var r=n(71811),o=n(10928),s=n(40292),i=n(40327);e.exports=function(e,t){return t=r(t,e),null==(e=s(e,t))||delete e[i(o(t))]}},1757:e=>{e.exports=function(e,t,n){for(var r=-1,o=e.length,s=t.length,i={};++r{e.exports=function(e,t){return e.has(t)}},71811:(e,t,n)=>{var r=n(1469),o=n(15403),s=n(55514),i=n(79833);e.exports=function(e,t){return r(e)?e:o(e,t)?[e]:s(i(e))}},40180:(e,t,n)=>{var r=n(14259);e.exports=function(e,t,n){var o=e.length;return n=void 0===n?o:n,!t&&n>=o?e:r(e,t,n)}},74318:(e,t,n)=>{var r=n(11149);e.exports=function(e){var t=new e.constructor(e.byteLength);return new r(t).set(new r(e)),t}},64626:(e,t,n)=>{e=n.nmd(e);var r=n(55639),o=t&&!t.nodeType&&t,s=o&&e&&!e.nodeType&&e,i=s&&s.exports===o?r.Buffer:void 0,a=i?i.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,r=a?a(n):new e.constructor(n);return e.copy(r),r}},57157:(e,t,n)=>{var r=n(74318);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}},93147:e=>{var t=/\w*$/;e.exports=function(e){var n=new e.constructor(e.source,t.exec(e));return n.lastIndex=e.lastIndex,n}},40419:(e,t,n)=>{var r=n(62705),o=r?r.prototype:void 0,s=o?o.valueOf:void 0;e.exports=function(e){return s?Object(s.call(e)):{}}},77133:(e,t,n)=>{var r=n(74318);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}},52157:e=>{var t=Math.max;e.exports=function(e,n,r,o){for(var s=-1,i=e.length,a=r.length,l=-1,c=n.length,u=t(i-a,0),p=Array(c+u),h=!o;++l{var t=Math.max;e.exports=function(e,n,r,o){for(var s=-1,i=e.length,a=-1,l=r.length,c=-1,u=n.length,p=t(i-l,0),h=Array(p+u),f=!o;++s{e.exports=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n{var r=n(34865),o=n(89465);e.exports=function(e,t,n,s){var i=!n;n||(n={});for(var a=-1,l=t.length;++a{var r=n(98363),o=n(99551);e.exports=function(e,t){return r(e,o(e),t)}},1911:(e,t,n)=>{var r=n(98363),o=n(51442);e.exports=function(e,t){return r(e,o(e),t)}},14429:(e,t,n)=>{var r=n(55639)["__core-js_shared__"];e.exports=r},97991:e=>{e.exports=function(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}},21463:(e,t,n)=>{var r=n(5976),o=n(16612);e.exports=function(e){return r((function(t,n){var r=-1,s=n.length,i=s>1?n[s-1]:void 0,a=s>2?n[2]:void 0;for(i=e.length>3&&"function"==typeof i?(s--,i):void 0,a&&o(n[0],n[1],a)&&(i=s<3?void 0:i,s=1),t=Object(t);++r{var r=n(98612);e.exports=function(e,t){return function(n,o){if(null==n)return n;if(!r(n))return e(n,o);for(var s=n.length,i=t?s:-1,a=Object(n);(t?i--:++i{e.exports=function(e){return function(t,n,r){for(var o=-1,s=Object(t),i=r(t),a=i.length;a--;){var l=i[e?a:++o];if(!1===n(s[l],l,s))break}return t}}},22402:(e,t,n)=>{var r=n(71774),o=n(55639);e.exports=function(e,t,n){var s=1&t,i=r(e);return function t(){return(this&&this!==o&&this instanceof t?i:e).apply(s?n:this,arguments)}}},98805:(e,t,n)=>{var r=n(40180),o=n(62689),s=n(83140),i=n(79833);e.exports=function(e){return function(t){t=i(t);var n=o(t)?s(t):void 0,a=n?n[0]:t.charAt(0),l=n?r(n,1).join(""):t.slice(1);return a[e]()+l}}},35393:(e,t,n)=>{var r=n(62663),o=n(53816),s=n(58748),i=RegExp("['’]","g");e.exports=function(e){return function(t){return r(s(o(t).replace(i,"")),e,"")}}},71774:(e,t,n)=>{var r=n(3118),o=n(13218);e.exports=function(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var n=r(e.prototype),s=e.apply(n,t);return o(s)?s:n}}},46347:(e,t,n)=>{var r=n(96874),o=n(71774),s=n(86935),i=n(94487),a=n(20893),l=n(46460),c=n(55639);e.exports=function(e,t,n){var u=o(e);return function o(){for(var p=arguments.length,h=Array(p),f=p,d=a(o);f--;)h[f]=arguments[f];var m=p<3&&h[0]!==d&&h[p-1]!==d?[]:l(h,d);return(p-=m.length){var r=n(67206),o=n(98612),s=n(3674);e.exports=function(e){return function(t,n,i){var a=Object(t);if(!o(t)){var l=r(n,3);t=s(t),n=function(e){return l(a[e],e,a)}}var c=e(t,n,i);return c>-1?a[l?t[c]:c]:void 0}}},86935:(e,t,n)=>{var r=n(52157),o=n(14054),s=n(97991),i=n(71774),a=n(94487),l=n(20893),c=n(90451),u=n(46460),p=n(55639);e.exports=function e(t,n,h,f,d,m,g,y,v,b){var w=128&n,E=1&n,x=2&n,S=24&n,_=512&n,j=x?void 0:i(t);return function O(){for(var k=arguments.length,A=Array(k),C=k;C--;)A[C]=arguments[C];if(S)var P=l(O),N=s(A,P);if(f&&(A=r(A,f,d,S)),m&&(A=o(A,m,g,S)),k-=N,S&&k1&&A.reverse(),w&&v{var r=n(96874),o=n(71774),s=n(55639);e.exports=function(e,t,n,i){var a=1&t,l=o(e);return function t(){for(var o=-1,c=arguments.length,u=-1,p=i.length,h=Array(p+c),f=this&&this!==s&&this instanceof t?l:e;++u{var r=n(86528),o=n(258),s=n(69255);e.exports=function(e,t,n,i,a,l,c,u,p,h){var f=8&t;t|=f?32:64,4&(t&=~(f?64:32))||(t&=-4);var d=[e,t,a,f?l:void 0,f?c:void 0,f?void 0:l,f?void 0:c,u,p,h],m=n.apply(void 0,d);return r(e)&&o(m,d),m.placeholder=i,s(m,e,t)}},97727:(e,t,n)=>{var r=n(28045),o=n(22402),s=n(46347),i=n(86935),a=n(84375),l=n(66833),c=n(63833),u=n(258),p=n(69255),h=n(40554),f=Math.max;e.exports=function(e,t,n,d,m,g,y,v){var b=2&t;if(!b&&"function"!=typeof e)throw new TypeError("Expected a function");var w=d?d.length:0;if(w||(t&=-97,d=m=void 0),y=void 0===y?y:f(h(y),0),v=void 0===v?v:h(v),w-=m?m.length:0,64&t){var E=d,x=m;d=m=void 0}var S=b?void 0:l(e),_=[e,t,n,d,m,E,x,g,y,v];if(S&&c(_,S),e=_[0],t=_[1],n=_[2],d=_[3],m=_[4],!(v=_[9]=void 0===_[9]?b?0:e.length:f(_[9]-w,0))&&24&t&&(t&=-25),t&&1!=t)j=8==t||16==t?s(e,t,v):32!=t&&33!=t||m.length?i.apply(void 0,_):a(e,t,n,d);else var j=o(e,t,n);return p((S?r:u)(j,_),e,t)}},60696:(e,t,n)=>{var r=n(68630);e.exports=function(e){return r(e)?void 0:e}},69389:(e,t,n)=>{var r=n(18674)({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"});e.exports=r},38777:(e,t,n)=>{var r=n(10852),o=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();e.exports=o},67114:(e,t,n)=>{var r=n(88668),o=n(82908),s=n(74757);e.exports=function(e,t,n,i,a,l){var c=1&n,u=e.length,p=t.length;if(u!=p&&!(c&&p>u))return!1;var h=l.get(e),f=l.get(t);if(h&&f)return h==t&&f==e;var d=-1,m=!0,g=2&n?new r:void 0;for(l.set(e,t),l.set(t,e);++d{var r=n(62705),o=n(11149),s=n(77813),i=n(67114),a=n(68776),l=n(21814),c=r?r.prototype:void 0,u=c?c.valueOf:void 0;e.exports=function(e,t,n,r,c,p,h){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!p(new o(e),new o(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return s(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var f=a;case"[object Set]":var d=1&r;if(f||(f=l),e.size!=t.size&&!d)return!1;var m=h.get(e);if(m)return m==t;r|=2,h.set(e,t);var g=i(f(e),f(t),r,c,p,h);return h.delete(e),g;case"[object Symbol]":if(u)return u.call(e)==u.call(t)}return!1}},16096:(e,t,n)=>{var r=n(58234),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,s,i,a){var l=1&n,c=r(e),u=c.length;if(u!=r(t).length&&!l)return!1;for(var p=u;p--;){var h=c[p];if(!(l?h in t:o.call(t,h)))return!1}var f=a.get(e),d=a.get(t);if(f&&d)return f==t&&d==e;var m=!0;a.set(e,t),a.set(t,e);for(var g=l;++p{var r=n(85564),o=n(45357),s=n(30061);e.exports=function(e){return s(o(e,void 0,r),e+"")}},31957:(e,t,n)=>{var r="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;e.exports=r},58234:(e,t,n)=>{var r=n(68866),o=n(99551),s=n(3674);e.exports=function(e){return r(e,s,o)}},46904:(e,t,n)=>{var r=n(68866),o=n(51442),s=n(81704);e.exports=function(e){return r(e,s,o)}},66833:(e,t,n)=>{var r=n(89250),o=n(50308),s=r?function(e){return r.get(e)}:o;e.exports=s},97658:(e,t,n)=>{var r=n(52060),o=Object.prototype.hasOwnProperty;e.exports=function(e){for(var t=e.name+"",n=r[t],s=o.call(r,t)?n.length:0;s--;){var i=n[s],a=i.func;if(null==a||a==e)return i.name}return t}},20893:e=>{e.exports=function(e){return e.placeholder}},45050:(e,t,n)=>{var r=n(37019);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},1499:(e,t,n)=>{var r=n(89162),o=n(3674);e.exports=function(e){for(var t=o(e),n=t.length;n--;){var s=t[n],i=e[s];t[n]=[s,i,r(i)]}return t}},10852:(e,t,n)=>{var r=n(28458),o=n(47801);e.exports=function(e,t){var n=o(e,t);return r(n)?n:void 0}},85924:(e,t,n)=>{var r=n(5569)(Object.getPrototypeOf,Object);e.exports=r},89607:(e,t,n)=>{var r=n(62705),o=Object.prototype,s=o.hasOwnProperty,i=o.toString,a=r?r.toStringTag:void 0;e.exports=function(e){var t=s.call(e,a),n=e[a];try{e[a]=void 0;var r=!0}catch(e){}var o=i.call(e);return r&&(t?e[a]=n:delete e[a]),o}},99551:(e,t,n)=>{var r=n(34963),o=n(70479),s=Object.prototype.propertyIsEnumerable,i=Object.getOwnPropertySymbols,a=i?function(e){return null==e?[]:(e=Object(e),r(i(e),(function(t){return s.call(e,t)})))}:o;e.exports=a},51442:(e,t,n)=>{var r=n(62488),o=n(85924),s=n(99551),i=n(70479),a=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)r(t,s(e)),e=o(e);return t}:i;e.exports=a},98882:(e,t,n)=>{var r=n(18552),o=n(57071),s=n(53818),i=n(58525),a=n(70577),l=n(44239),c=n(80346),u="[object Map]",p="[object Promise]",h="[object Set]",f="[object WeakMap]",d="[object DataView]",m=c(r),g=c(o),y=c(s),v=c(i),b=c(a),w=l;(r&&w(new r(new ArrayBuffer(1)))!=d||o&&w(new o)!=u||s&&w(s.resolve())!=p||i&&w(new i)!=h||a&&w(new a)!=f)&&(w=function(e){var t=l(e),n="[object Object]"==t?e.constructor:void 0,r=n?c(n):"";if(r)switch(r){case m:return d;case g:return u;case y:return p;case v:return h;case b:return f}return t}),e.exports=w},47801:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},58775:e=>{var t=/\{\n\/\* \[wrapped with (.+)\] \*/,n=/,? & /;e.exports=function(e){var r=e.match(t);return r?r[1].split(n):[]}},222:(e,t,n)=>{var r=n(71811),o=n(35694),s=n(1469),i=n(65776),a=n(41780),l=n(40327);e.exports=function(e,t,n){for(var c=-1,u=(t=r(t,e)).length,p=!1;++c{var t=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");e.exports=function(e){return t.test(e)}},93157:e=>{var t=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;e.exports=function(e){return t.test(e)}},51789:(e,t,n)=>{var r=n(94536);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},80401:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},57667:(e,t,n)=>{var r=n(94536),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return o.call(t,e)?t[e]:void 0}},21327:(e,t,n)=>{var r=n(94536),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:o.call(t,e)}},81866:(e,t,n)=>{var r=n(94536);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?"__lodash_hash_undefined__":t,this}},43824:e=>{var t=Object.prototype.hasOwnProperty;e.exports=function(e){var n=e.length,r=new e.constructor(n);return n&&"string"==typeof e[0]&&t.call(e,"index")&&(r.index=e.index,r.input=e.input),r}},29148:(e,t,n)=>{var r=n(74318),o=n(57157),s=n(93147),i=n(40419),a=n(77133);e.exports=function(e,t,n){var l=e.constructor;switch(t){case"[object ArrayBuffer]":return r(e);case"[object Boolean]":case"[object Date]":return new l(+e);case"[object DataView]":return o(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return a(e,n);case"[object Map]":case"[object Set]":return new l;case"[object Number]":case"[object String]":return new l(e);case"[object RegExp]":return s(e);case"[object Symbol]":return i(e)}}},38517:(e,t,n)=>{var r=n(3118),o=n(85924),s=n(25726);e.exports=function(e){return"function"!=typeof e.constructor||s(e)?{}:r(o(e))}},83112:e=>{var t=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;e.exports=function(e,n){var r=n.length;if(!r)return e;var o=r-1;return n[o]=(r>1?"& ":"")+n[o],n=n.join(r>2?", ":" "),e.replace(t,"{\n/* [wrapped with "+n+"] */\n")}},37285:(e,t,n)=>{var r=n(62705),o=n(35694),s=n(1469),i=r?r.isConcatSpreadable:void 0;e.exports=function(e){return s(e)||o(e)||!!(i&&e&&e[i])}},65776:e=>{var t=/^(?:0|[1-9]\d*)$/;e.exports=function(e,n){var r=typeof e;return!!(n=null==n?9007199254740991:n)&&("number"==r||"symbol"!=r&&t.test(e))&&e>-1&&e%1==0&&e{var r=n(77813),o=n(98612),s=n(65776),i=n(13218);e.exports=function(e,t,n){if(!i(n))return!1;var a=typeof t;return!!("number"==a?o(n)&&s(t,n.length):"string"==a&&t in n)&&r(n[t],e)}},15403:(e,t,n)=>{var r=n(1469),o=n(33448),s=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,i=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!o(e))||(i.test(e)||!s.test(e)||null!=t&&e in Object(t))}},37019:e=>{e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},86528:(e,t,n)=>{var r=n(96425),o=n(66833),s=n(97658),i=n(8111);e.exports=function(e){var t=s(e),n=i[t];if("function"!=typeof n||!(t in r.prototype))return!1;if(e===n)return!0;var a=o(n);return!!a&&e===a[0]}},15346:(e,t,n)=>{var r,o=n(14429),s=(r=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!s&&s in e}},25726:e=>{var t=Object.prototype;e.exports=function(e){var n=e&&e.constructor;return e===("function"==typeof n&&n.prototype||t)}},89162:(e,t,n)=>{var r=n(13218);e.exports=function(e){return e==e&&!r(e)}},27040:e=>{e.exports=function(){this.__data__=[],this.size=0}},14125:(e,t,n)=>{var r=n(18470),o=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0)&&(n==t.length-1?t.pop():o.call(t,n,1),--this.size,!0)}},82117:(e,t,n)=>{var r=n(18470);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},67518:(e,t,n)=>{var r=n(18470);e.exports=function(e){return r(this.__data__,e)>-1}},54705:(e,t,n)=>{var r=n(18470);e.exports=function(e,t){var n=this.__data__,o=r(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this}},24785:(e,t,n)=>{var r=n(1989),o=n(38407),s=n(57071);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(s||o),string:new r}}},11285:(e,t,n)=>{var r=n(45050);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},96e3:(e,t,n)=>{var r=n(45050);e.exports=function(e){return r(this,e).get(e)}},49916:(e,t,n)=>{var r=n(45050);e.exports=function(e){return r(this,e).has(e)}},95265:(e,t,n)=>{var r=n(45050);e.exports=function(e,t){var n=r(this,e),o=n.size;return n.set(e,t),this.size+=n.size==o?0:1,this}},68776:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}},42634:e=>{e.exports=function(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}},24523:(e,t,n)=>{var r=n(88306);e.exports=function(e){var t=r(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}},63833:(e,t,n)=>{var r=n(52157),o=n(14054),s=n(46460),i="__lodash_placeholder__",a=128,l=Math.min;e.exports=function(e,t){var n=e[1],c=t[1],u=n|c,p=u<131,h=c==a&&8==n||c==a&&256==n&&e[7].length<=t[8]||384==c&&t[7].length<=t[8]&&8==n;if(!p&&!h)return e;1&c&&(e[2]=t[2],u|=1&n?0:4);var f=t[3];if(f){var d=e[3];e[3]=d?r(d,f,t[4]):f,e[4]=d?s(e[3],i):t[4]}return(f=t[5])&&(d=e[5],e[5]=d?o(d,f,t[6]):f,e[6]=d?s(e[5],i):t[6]),(f=t[7])&&(e[7]=f),c&a&&(e[8]=null==e[8]?t[8]:l(e[8],t[8])),null==e[9]&&(e[9]=t[9]),e[0]=t[0],e[1]=u,e}},89250:(e,t,n)=>{var r=n(70577),o=r&&new r;e.exports=o},94536:(e,t,n)=>{var r=n(10852)(Object,"create");e.exports=r},86916:(e,t,n)=>{var r=n(5569)(Object.keys,Object);e.exports=r},33498:e=>{e.exports=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}},31167:(e,t,n)=>{e=n.nmd(e);var r=n(31957),o=t&&!t.nodeType&&t,s=o&&e&&!e.nodeType&&e,i=s&&s.exports===o&&r.process,a=function(){try{var e=s&&s.require&&s.require("util").types;return e||i&&i.binding&&i.binding("util")}catch(e){}}();e.exports=a},2333:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},5569:e=>{e.exports=function(e,t){return function(n){return e(t(n))}}},45357:(e,t,n)=>{var r=n(96874),o=Math.max;e.exports=function(e,t,n){return t=o(void 0===t?e.length-1:t,0),function(){for(var s=arguments,i=-1,a=o(s.length-t,0),l=Array(a);++i{var r=n(97786),o=n(14259);e.exports=function(e,t){return t.length<2?e:r(e,o(t,0,-1))}},52060:e=>{e.exports={}},90451:(e,t,n)=>{var r=n(278),o=n(65776),s=Math.min;e.exports=function(e,t){for(var n=e.length,i=s(t.length,n),a=r(e);i--;){var l=t[i];e[i]=o(l,n)?a[l]:void 0}return e}},46460:e=>{var t="__lodash_placeholder__";e.exports=function(e,n){for(var r=-1,o=e.length,s=0,i=[];++r{var r=n(31957),o="object"==typeof self&&self&&self.Object===Object&&self,s=r||o||Function("return this")();e.exports=s},36390:e=>{e.exports=function(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}},90619:e=>{e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},72385:e=>{e.exports=function(e){return this.__data__.has(e)}},258:(e,t,n)=>{var r=n(28045),o=n(21275)(r);e.exports=o},21814:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},30061:(e,t,n)=>{var r=n(56560),o=n(21275)(r);e.exports=o},69255:(e,t,n)=>{var r=n(58775),o=n(83112),s=n(30061),i=n(87241);e.exports=function(e,t,n){var a=t+"";return s(e,o(a,i(r(a),n)))}},21275:e=>{var t=Date.now;e.exports=function(e){var n=0,r=0;return function(){var o=t(),s=16-(o-r);if(r=o,s>0){if(++n>=800)return arguments[0]}else n=0;return e.apply(void 0,arguments)}}},37465:(e,t,n)=>{var r=n(38407);e.exports=function(){this.__data__=new r,this.size=0}},63779:e=>{e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},67599:e=>{e.exports=function(e){return this.__data__.get(e)}},44758:e=>{e.exports=function(e){return this.__data__.has(e)}},34309:(e,t,n)=>{var r=n(38407),o=n(57071),s=n(83369);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var i=n.__data__;if(!o||i.length<199)return i.push([e,t]),this.size=++n.size,this;n=this.__data__=new s(i)}return n.set(e,t),this.size=n.size,this}},42351:e=>{e.exports=function(e,t,n){for(var r=n-1,o=e.length;++r{var r=n(44286),o=n(62689),s=n(676);e.exports=function(e){return o(e)?s(e):r(e)}},55514:(e,t,n)=>{var r=n(24523),o=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,s=/\\(\\)?/g,i=r((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(o,(function(e,n,r,o){t.push(r?o.replace(s,"$1"):n||e)})),t}));e.exports=i},40327:(e,t,n)=>{var r=n(33448);e.exports=function(e){if("string"==typeof e||r(e))return e;var t=e+"";return"0"==t&&1/e==-Infinity?"-0":t}},80346:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},67990:e=>{var t=/\s/;e.exports=function(e){for(var n=e.length;n--&&t.test(e.charAt(n)););return n}},676:e=>{var t="\\ud800-\\udfff",n="["+t+"]",r="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",o="\\ud83c[\\udffb-\\udfff]",s="[^"+t+"]",i="(?:\\ud83c[\\udde6-\\uddff]){2}",a="[\\ud800-\\udbff][\\udc00-\\udfff]",l="(?:"+r+"|"+o+")"+"?",c="[\\ufe0e\\ufe0f]?",u=c+l+("(?:\\u200d(?:"+[s,i,a].join("|")+")"+c+l+")*"),p="(?:"+[s+r+"?",r,i,a,n].join("|")+")",h=RegExp(o+"(?="+o+")|"+p+u,"g");e.exports=function(e){return e.match(h)||[]}},2757:e=>{var t="\\ud800-\\udfff",n="\\u2700-\\u27bf",r="a-z\\xdf-\\xf6\\xf8-\\xff",o="A-Z\\xc0-\\xd6\\xd8-\\xde",s="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",i="["+s+"]",a="\\d+",l="["+n+"]",c="["+r+"]",u="[^"+t+s+a+n+r+o+"]",p="(?:\\ud83c[\\udde6-\\uddff]){2}",h="[\\ud800-\\udbff][\\udc00-\\udfff]",f="["+o+"]",d="(?:"+c+"|"+u+")",m="(?:"+f+"|"+u+")",g="(?:['’](?:d|ll|m|re|s|t|ve))?",y="(?:['’](?:D|LL|M|RE|S|T|VE))?",v="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",b="[\\ufe0e\\ufe0f]?",w=b+v+("(?:\\u200d(?:"+["[^"+t+"]",p,h].join("|")+")"+b+v+")*"),E="(?:"+[l,p,h].join("|")+")"+w,x=RegExp([f+"?"+c+"+"+g+"(?="+[i,f,"$"].join("|")+")",m+"+"+y+"(?="+[i,f+d,"$"].join("|")+")",f+"?"+d+"+"+g,f+"+"+y,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",a,E].join("|"),"g");e.exports=function(e){return e.match(x)||[]}},87241:(e,t,n)=>{var r=n(77412),o=n(47443),s=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]];e.exports=function(e,t){return r(s,(function(n){var r="_."+n[0];t&n[1]&&!o(e,r)&&e.push(r)})),e.sort()}},21913:(e,t,n)=>{var r=n(96425),o=n(7548),s=n(278);e.exports=function(e){if(e instanceof r)return e.clone();var t=new o(e.__wrapped__,e.__chain__);return t.__actions__=s(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}},39514:(e,t,n)=>{var r=n(97727);e.exports=function(e,t,n){return t=n?void 0:t,t=e&&null==t?e.length:t,r(e,128,void 0,void 0,void 0,void 0,t)}},68929:(e,t,n)=>{var r=n(48403),o=n(35393)((function(e,t,n){return t=t.toLowerCase(),e+(n?r(t):t)}));e.exports=o},48403:(e,t,n)=>{var r=n(79833),o=n(11700);e.exports=function(e){return o(r(e).toLowerCase())}},66678:(e,t,n)=>{var r=n(85990);e.exports=function(e){return r(e,4)}},75703:e=>{e.exports=function(e){return function(){return e}}},40087:(e,t,n)=>{var r=n(97727);function o(e,t,n){var s=r(e,8,void 0,void 0,void 0,void 0,void 0,t=n?void 0:t);return s.placeholder=o.placeholder,s}o.placeholder={},e.exports=o},23279:(e,t,n)=>{var r=n(13218),o=n(7771),s=n(14841),i=Math.max,a=Math.min;e.exports=function(e,t,n){var l,c,u,p,h,f,d=0,m=!1,g=!1,y=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function v(t){var n=l,r=c;return l=c=void 0,d=t,p=e.apply(r,n)}function b(e){var n=e-f;return void 0===f||n>=t||n<0||g&&e-d>=u}function w(){var e=o();if(b(e))return E(e);h=setTimeout(w,function(e){var n=t-(e-f);return g?a(n,u-(e-d)):n}(e))}function E(e){return h=void 0,y&&l?v(e):(l=c=void 0,p)}function x(){var e=o(),n=b(e);if(l=arguments,c=this,f=e,n){if(void 0===h)return function(e){return d=e,h=setTimeout(w,t),m?v(e):p}(f);if(g)return clearTimeout(h),h=setTimeout(w,t),v(f)}return void 0===h&&(h=setTimeout(w,t)),p}return t=s(t)||0,r(n)&&(m=!!n.leading,u=(g="maxWait"in n)?i(s(n.maxWait)||0,t):u,y="trailing"in n?!!n.trailing:y),x.cancel=function(){void 0!==h&&clearTimeout(h),d=0,l=f=c=h=void 0},x.flush=function(){return void 0===h?p:E(o())},x}},53816:(e,t,n)=>{var r=n(69389),o=n(79833),s=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,i=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g");e.exports=function(e){return(e=o(e))&&e.replace(s,r).replace(i,"")}},77813:e=>{e.exports=function(e,t){return e===t||e!=e&&t!=t}},13311:(e,t,n)=>{var r=n(67740)(n(30998));e.exports=r},30998:(e,t,n)=>{var r=n(41848),o=n(67206),s=n(40554),i=Math.max;e.exports=function(e,t,n){var a=null==e?0:e.length;if(!a)return-1;var l=null==n?0:s(n);return l<0&&(l=i(a+l,0)),r(e,o(t,3),l)}},85564:(e,t,n)=>{var r=n(21078);e.exports=function(e){return(null==e?0:e.length)?r(e,1):[]}},84599:(e,t,n)=>{var r=n(68836),o=n(69306),s=Array.prototype.push;function i(e,t){return 2==t?function(t,n){return e(t,n)}:function(t){return e(t)}}function a(e){for(var t=e?e.length:0,n=Array(t);t--;)n[t]=e[t];return n}function l(e,t){return function(){var n=arguments.length;if(n){for(var r=Array(n);n--;)r[n]=arguments[n];var o=r[0]=t.apply(void 0,r);return e.apply(void 0,r),o}}}e.exports=function e(t,n,c,u){var p="function"==typeof n,h=n===Object(n);if(h&&(u=c,c=n,n=void 0),null==c)throw new TypeError;u||(u={});var f={cap:!("cap"in u)||u.cap,curry:!("curry"in u)||u.curry,fixed:!("fixed"in u)||u.fixed,immutable:!("immutable"in u)||u.immutable,rearg:!("rearg"in u)||u.rearg},d=p?c:o,m="curry"in u&&u.curry,g="fixed"in u&&u.fixed,y="rearg"in u&&u.rearg,v=p?c.runInContext():void 0,b=p?c:{ary:t.ary,assign:t.assign,clone:t.clone,curry:t.curry,forEach:t.forEach,isArray:t.isArray,isError:t.isError,isFunction:t.isFunction,isWeakMap:t.isWeakMap,iteratee:t.iteratee,keys:t.keys,rearg:t.rearg,toInteger:t.toInteger,toPath:t.toPath},w=b.ary,E=b.assign,x=b.clone,S=b.curry,_=b.forEach,j=b.isArray,O=b.isError,k=b.isFunction,A=b.isWeakMap,C=b.keys,P=b.rearg,N=b.toInteger,I=b.toPath,T=C(r.aryMethod),R={castArray:function(e){return function(){var t=arguments[0];return j(t)?e(a(t)):e.apply(void 0,arguments)}},iteratee:function(e){return function(){var t=arguments[1],n=e(arguments[0],t),r=n.length;return f.cap&&"number"==typeof t?(t=t>2?t-2:1,r&&r<=t?n:i(n,t)):n}},mixin:function(e){return function(t){var n=this;if(!k(n))return e(n,Object(t));var r=[];return _(C(t),(function(e){k(t[e])&&r.push([e,n.prototype[e]])})),e(n,Object(t)),_(r,(function(e){var t=e[1];k(t)?n.prototype[e[0]]=t:delete n.prototype[e[0]]})),n}},nthArg:function(e){return function(t){var n=t<0?1:N(t)+1;return S(e(t),n)}},rearg:function(e){return function(t,n){var r=n?n.length:0;return S(e(t,n),r)}},runInContext:function(n){return function(r){return e(t,n(r),u)}}};function M(e,t){if(f.cap){var n=r.iterateeRearg[e];if(n)return function(e,t){return $(e,(function(e){var n=t.length;return function(e,t){return 2==t?function(t,n){return e.apply(void 0,arguments)}:function(t){return e.apply(void 0,arguments)}}(P(i(e,n),t),n)}))}(t,n);var o=!p&&r.iterateeAry[e];if(o)return function(e,t){return $(e,(function(e){return"function"==typeof e?i(e,t):e}))}(t,o)}return t}function D(e,t,n){if(f.fixed&&(g||!r.skipFixed[e])){var o=r.methodSpread[e],i=o&&o.start;return void 0===i?w(t,n):function(e,t){return function(){for(var n=arguments.length,r=n-1,o=Array(n);n--;)o[n]=arguments[n];var i=o[t],a=o.slice(0,t);return i&&s.apply(a,i),t!=r&&s.apply(a,o.slice(t+1)),e.apply(this,a)}}(t,i)}return t}function F(e,t,n){return f.rearg&&n>1&&(y||!r.skipRearg[e])?P(t,r.methodRearg[e]||r.aryRearg[n]):t}function L(e,t){for(var n=-1,r=(t=I(t)).length,o=r-1,s=x(Object(e)),i=s;null!=i&&++n1?S(t,n):t}(0,o=M(s,o),e),!1}})),!o})),o||(o=i),o==t&&(o=m?S(o,1):function(){return t.apply(this,arguments)}),o.convert=B(s,t),o.placeholder=t.placeholder=n,o}if(!h)return q(n,c,d);var U=c,z=[];return _(T,(function(e){_(r.aryMethod[e],(function(e){var t=U[r.remap[e]||e];t&&z.push([e,q(e,t,U)])}))})),_(C(U),(function(e){var t=U[e];if("function"==typeof t){for(var n=z.length;n--;)if(z[n][0]==e)return;t.convert=B(e,t),z.push([e,t])}})),_(z,(function(e){U[e[0]]=e[1]})),U.convert=function(e){return U.runInContext.convert(e)(void 0)},U.placeholder=U,_(C(U),(function(e){_(r.realToAlias[e]||[],(function(t){U[t]=U[e]}))})),U}},68836:(e,t)=>{t.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"},t.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]},t.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]},t.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2},t.iterateeRearg={mapKeys:[1],reduceRight:[1,0]},t.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]},t.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}},t.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}},t.realToAlias=function(){var e=Object.prototype.hasOwnProperty,n=t.aliasToReal,r={};for(var o in n){var s=n[o];e.call(r,s)?r[s].push(o):r[s]=[o]}return r}(),t.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"},t.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0},t.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}},4269:(e,t,n)=>{e.exports={ary:n(39514),assign:n(44037),clone:n(66678),curry:n(40087),forEach:n(77412),isArray:n(1469),isError:n(64647),isFunction:n(23560),isWeakMap:n(81018),iteratee:n(72594),keys:n(280),rearg:n(4963),toInteger:n(40554),toPath:n(30084)}},72700:(e,t,n)=>{e.exports=n(28252)},92822:(e,t,n)=>{var r=n(84599),o=n(4269);e.exports=function(e,t,n){return r(o,e,t,n)}},69306:e=>{e.exports={}},28252:(e,t,n)=>{var r=n(92822)("set",n(36968));r.placeholder=n(69306),e.exports=r},27361:(e,t,n)=>{var r=n(97786);e.exports=function(e,t,n){var o=null==e?void 0:r(e,t);return void 0===o?n:o}},79095:(e,t,n)=>{var r=n(13),o=n(222);e.exports=function(e,t){return null!=e&&o(e,t,r)}},6557:e=>{e.exports=function(e){return e}},35694:(e,t,n)=>{var r=n(9454),o=n(37005),s=Object.prototype,i=s.hasOwnProperty,a=s.propertyIsEnumerable,l=r(function(){return arguments}())?r:function(e){return o(e)&&i.call(e,"callee")&&!a.call(e,"callee")};e.exports=l},1469:e=>{var t=Array.isArray;e.exports=t},98612:(e,t,n)=>{var r=n(23560),o=n(41780);e.exports=function(e){return null!=e&&o(e.length)&&!r(e)}},29246:(e,t,n)=>{var r=n(98612),o=n(37005);e.exports=function(e){return o(e)&&r(e)}},51584:(e,t,n)=>{var r=n(44239),o=n(37005);e.exports=function(e){return!0===e||!1===e||o(e)&&"[object Boolean]"==r(e)}},44144:(e,t,n)=>{e=n.nmd(e);var r=n(55639),o=n(95062),s=t&&!t.nodeType&&t,i=s&&e&&!e.nodeType&&e,a=i&&i.exports===s?r.Buffer:void 0,l=(a?a.isBuffer:void 0)||o;e.exports=l},41609:(e,t,n)=>{var r=n(280),o=n(98882),s=n(35694),i=n(1469),a=n(98612),l=n(44144),c=n(25726),u=n(36719),p=Object.prototype.hasOwnProperty;e.exports=function(e){if(null==e)return!0;if(a(e)&&(i(e)||"string"==typeof e||"function"==typeof e.splice||l(e)||u(e)||s(e)))return!e.length;var t=o(e);if("[object Map]"==t||"[object Set]"==t)return!e.size;if(c(e))return!r(e).length;for(var n in e)if(p.call(e,n))return!1;return!0}},18446:(e,t,n)=>{var r=n(90939);e.exports=function(e,t){return r(e,t)}},64647:(e,t,n)=>{var r=n(44239),o=n(37005),s=n(68630);e.exports=function(e){if(!o(e))return!1;var t=r(e);return"[object Error]"==t||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!s(e)}},23560:(e,t,n)=>{var r=n(44239),o=n(13218);e.exports=function(e){if(!o(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},41780:e=>{e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},56688:(e,t,n)=>{var r=n(25588),o=n(7518),s=n(31167),i=s&&s.isMap,a=i?o(i):r;e.exports=a},45220:e=>{e.exports=function(e){return null===e}},81763:(e,t,n)=>{var r=n(44239),o=n(37005);e.exports=function(e){return"number"==typeof e||o(e)&&"[object Number]"==r(e)}},13218:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},37005:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},68630:(e,t,n)=>{var r=n(44239),o=n(85924),s=n(37005),i=Function.prototype,a=Object.prototype,l=i.toString,c=a.hasOwnProperty,u=l.call(Object);e.exports=function(e){if(!s(e)||"[object Object]"!=r(e))return!1;var t=o(e);if(null===t)return!0;var n=c.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&l.call(n)==u}},72928:(e,t,n)=>{var r=n(29221),o=n(7518),s=n(31167),i=s&&s.isSet,a=i?o(i):r;e.exports=a},47037:(e,t,n)=>{var r=n(44239),o=n(1469),s=n(37005);e.exports=function(e){return"string"==typeof e||!o(e)&&s(e)&&"[object String]"==r(e)}},33448:(e,t,n)=>{var r=n(44239),o=n(37005);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},36719:(e,t,n)=>{var r=n(38749),o=n(7518),s=n(31167),i=s&&s.isTypedArray,a=i?o(i):r;e.exports=a},81018:(e,t,n)=>{var r=n(98882),o=n(37005);e.exports=function(e){return o(e)&&"[object WeakMap]"==r(e)}},72594:(e,t,n)=>{var r=n(85990),o=n(67206);e.exports=function(e){return o("function"==typeof e?e:r(e,1))}},3674:(e,t,n)=>{var r=n(14636),o=n(280),s=n(98612);e.exports=function(e){return s(e)?r(e):o(e)}},81704:(e,t,n)=>{var r=n(14636),o=n(10313),s=n(98612);e.exports=function(e){return s(e)?r(e,!0):o(e)}},10928:e=>{e.exports=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},88306:(e,t,n)=>{var r=n(83369);function o(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,o=t?t.apply(this,r):r[0],s=n.cache;if(s.has(o))return s.get(o);var i=e.apply(this,r);return n.cache=s.set(o,i)||s,i};return n.cache=new(o.Cache||r),n}o.Cache=r,e.exports=o},82492:(e,t,n)=>{var r=n(42980),o=n(21463)((function(e,t,n){r(e,t,n)}));e.exports=o},94885:e=>{e.exports=function(e){if("function"!=typeof e)throw new TypeError("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}},50308:e=>{e.exports=function(){}},7771:(e,t,n)=>{var r=n(55639);e.exports=function(){return r.Date.now()}},57557:(e,t,n)=>{var r=n(29932),o=n(85990),s=n(57406),i=n(71811),a=n(98363),l=n(60696),c=n(99021),u=n(46904),p=c((function(e,t){var n={};if(null==e)return n;var c=!1;t=r(t,(function(t){return t=i(t,e),c||(c=t.length>1),t})),a(e,u(e),n),c&&(n=o(n,7,l));for(var p=t.length;p--;)s(n,t[p]);return n}));e.exports=p},39601:(e,t,n)=>{var r=n(40371),o=n(79152),s=n(15403),i=n(40327);e.exports=function(e){return s(e)?r(i(e)):o(e)}},4963:(e,t,n)=>{var r=n(97727),o=n(99021),s=o((function(e,t){return r(e,256,void 0,void 0,void 0,t)}));e.exports=s},54061:(e,t,n)=>{var r=n(62663),o=n(89881),s=n(67206),i=n(10107),a=n(1469);e.exports=function(e,t,n){var l=a(e)?r:i,c=arguments.length<3;return l(e,s(t,4),n,c,o)}},36968:(e,t,n)=>{var r=n(10611);e.exports=function(e,t,n){return null==e?e:r(e,t,n)}},59704:(e,t,n)=>{var r=n(82908),o=n(67206),s=n(5076),i=n(1469),a=n(16612);e.exports=function(e,t,n){var l=i(e)?r:s;return n&&a(e,t,n)&&(t=void 0),l(e,o(t,3))}},70479:e=>{e.exports=function(){return[]}},95062:e=>{e.exports=function(){return!1}},18601:(e,t,n)=>{var r=n(14841),o=1/0;e.exports=function(e){return e?(e=r(e))===o||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},40554:(e,t,n)=>{var r=n(18601);e.exports=function(e){var t=r(e),n=t%1;return t==t?n?t-n:t:0}},7334:(e,t,n)=>{var r=n(79833);e.exports=function(e){return r(e).toLowerCase()}},14841:(e,t,n)=>{var r=n(27561),o=n(13218),s=n(33448),i=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(s(e))return NaN;if(o(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=r(e);var n=a.test(e);return n||l.test(e)?c(e.slice(2),n?2:8):i.test(e)?NaN:+e}},30084:(e,t,n)=>{var r=n(29932),o=n(278),s=n(1469),i=n(33448),a=n(55514),l=n(40327),c=n(79833);e.exports=function(e){return s(e)?r(e,l):i(e)?[e]:o(a(c(e)))}},59881:(e,t,n)=>{var r=n(98363),o=n(81704);e.exports=function(e){return r(e,o(e))}},79833:(e,t,n)=>{var r=n(80531);e.exports=function(e){return null==e?"":r(e)}},11700:(e,t,n)=>{var r=n(98805)("toUpperCase");e.exports=r},58748:(e,t,n)=>{var r=n(49029),o=n(93157),s=n(79833),i=n(2757);e.exports=function(e,t,n){return e=s(e),void 0===(t=n?void 0:t)?o(e)?i(e):r(e):e.match(t)||[]}},8111:(e,t,n)=>{var r=n(96425),o=n(7548),s=n(9435),i=n(1469),a=n(37005),l=n(21913),c=Object.prototype.hasOwnProperty;function u(e){if(a(e)&&!i(e)&&!(e instanceof r)){if(e instanceof o)return e;if(c.call(e,"__wrapped__"))return l(e)}return new o(e)}u.prototype=s.prototype,u.prototype.constructor=u,e.exports=u},7287:(e,t,n)=>{var r=n(34865),o=n(1757);e.exports=function(e,t){return o(e||[],t||[],r)}},96470:(e,t,n)=>{"use strict";var r=n(47802),o=n(21102);t.highlight=i,t.highlightAuto=function(e,t){var n,a,l,c,u=t||{},p=u.subset||r.listLanguages(),h=u.prefix,f=p.length,d=-1;null==h&&(h=s);if("string"!=typeof e)throw o("Expected `string` for value, got `%s`",e);a={relevance:0,language:null,value:[]},n={relevance:0,language:null,value:[]};for(;++da.relevance&&(a=l),l.relevance>n.relevance&&(a=n,n=l));a.language&&(n.secondBest=a);return n},t.registerLanguage=function(e,t){r.registerLanguage(e,t)},t.listLanguages=function(){return r.listLanguages()},t.registerAlias=function(e,t){var n,o=e;t&&((o={})[e]=t);for(n in o)r.registerAliases(o[n],{languageName:n})},a.prototype.addText=function(e){var t,n,r=this.stack;if(""===e)return;t=r[r.length-1],(n=t.children[t.children.length-1])&&"text"===n.type?n.value+=e:t.children.push({type:"text",value:e})},a.prototype.addKeyword=function(e,t){this.openNode(t),this.addText(e),this.closeNode()},a.prototype.addSublanguage=function(e,t){var n=this.stack,r=n[n.length-1],o=e.rootNode.children,s=t?{type:"element",tagName:"span",properties:{className:[t]},children:o}:o;r.children=r.children.concat(s)},a.prototype.openNode=function(e){var t=this.stack,n=this.options.classPrefix+e,r=t[t.length-1],o={type:"element",tagName:"span",properties:{className:[n]},children:[]};r.children.push(o),t.push(o)},a.prototype.closeNode=function(){this.stack.pop()},a.prototype.closeAllNodes=l,a.prototype.finalize=l,a.prototype.toHTML=function(){return""};var s="hljs-";function i(e,t,n){var i,l=r.configure({}),c=(n||{}).prefix;if("string"!=typeof e)throw o("Expected `string` for name, got `%s`",e);if(!r.getLanguage(e))throw o("Unknown language: `%s` is not registered",e);if("string"!=typeof t)throw o("Expected `string` for value, got `%s`",t);if(null==c&&(c=s),r.configure({__emitter:a,classPrefix:c}),i=r.highlight(t,{language:e,ignoreIllegals:!0}),r.configure(l||{}),i.errorRaised)throw i.errorRaised;return{relevance:i.relevance,language:i.language,value:i.emitter.rootNode.children}}function a(e){this.options=e,this.rootNode={children:[]},this.stack=[this.rootNode]}function l(){}},42566:(e,t,n)=>{const r=n(94885);function o(e){return"string"==typeof e?t=>t.element===e:e.constructor&&e.extend?t=>t instanceof e:e}class s{constructor(e){this.elements=e||[]}toValue(){return this.elements.map((e=>e.toValue()))}map(e,t){return this.elements.map(e,t)}flatMap(e,t){return this.map(e,t).reduce(((e,t)=>e.concat(t)),[])}compactMap(e,t){const n=[];return this.forEach((r=>{const o=e.bind(t)(r);o&&n.push(o)})),n}filter(e,t){return e=o(e),new s(this.elements.filter(e,t))}reject(e,t){return e=o(e),new s(this.elements.filter(r(e),t))}find(e,t){return e=o(e),this.elements.find(e,t)}forEach(e,t){this.elements.forEach(e,t)}reduce(e,t){return this.elements.reduce(e,t)}includes(e){return this.elements.some((t=>t.equals(e)))}shift(){return this.elements.shift()}unshift(e){this.elements.unshift(this.refract(e))}push(e){return this.elements.push(this.refract(e)),this}add(e){this.push(e)}get(e){return this.elements[e]}getValue(e){const t=this.elements[e];if(t)return t.toValue()}get length(){return this.elements.length}get isEmpty(){return 0===this.elements.length}get first(){return this.elements[0]}}"undefined"!=typeof Symbol&&(s.prototype[Symbol.iterator]=function(){return this.elements[Symbol.iterator]()}),e.exports=s},17645:e=>{class t{constructor(e,t){this.key=e,this.value=t}clone(){const e=new t;return this.key&&(e.key=this.key.clone()),this.value&&(e.value=this.value.clone()),e}}e.exports=t},78520:(e,t,n)=>{const r=n(45220),o=n(47037),s=n(81763),i=n(51584),a=n(13218),l=n(28219),c=n(99829);class u{constructor(e){this.elementMap={},this.elementDetection=[],this.Element=c.Element,this.KeyValuePair=c.KeyValuePair,e&&e.noDefault||this.useDefault(),this._attributeElementKeys=[],this._attributeElementArrayKeys=[]}use(e){return e.namespace&&e.namespace({base:this}),e.load&&e.load({base:this}),this}useDefault(){return this.register("null",c.NullElement).register("string",c.StringElement).register("number",c.NumberElement).register("boolean",c.BooleanElement).register("array",c.ArrayElement).register("object",c.ObjectElement).register("member",c.MemberElement).register("ref",c.RefElement).register("link",c.LinkElement),this.detect(r,c.NullElement,!1).detect(o,c.StringElement,!1).detect(s,c.NumberElement,!1).detect(i,c.BooleanElement,!1).detect(Array.isArray,c.ArrayElement,!1).detect(a,c.ObjectElement,!1),this}register(e,t){return this._elements=void 0,this.elementMap[e]=t,this}unregister(e){return this._elements=void 0,delete this.elementMap[e],this}detect(e,t,n){return void 0===n||n?this.elementDetection.unshift([e,t]):this.elementDetection.push([e,t]),this}toElement(e){if(e instanceof this.Element)return e;let t;for(let n=0;n{const t=e[0].toUpperCase()+e.substr(1);this._elements[t]=this.elementMap[e]}))),this._elements}get serialiser(){return new l(this)}}l.prototype.Namespace=u,e.exports=u},87526:(e,t,n)=>{const r=n(94885),o=n(42566);class s extends o{map(e,t){return this.elements.map((n=>e.bind(t)(n.value,n.key,n)))}filter(e,t){return new s(this.elements.filter((n=>e.bind(t)(n.value,n.key,n))))}reject(e,t){return this.filter(r(e.bind(t)))}forEach(e,t){return this.elements.forEach(((n,r)=>{e.bind(t)(n.value,n.key,n,r)}))}keys(){return this.map(((e,t)=>t.toValue()))}values(){return this.map((e=>e.toValue()))}}e.exports=s},99829:(e,t,n)=>{const r=n(3079),o=n(96295),s=n(16036),i=n(91090),a=n(18866),l=n(35804),c=n(5946),u=n(76735),p=n(59964),h=n(38588),f=n(42566),d=n(87526),m=n(17645);function g(e){if(e instanceof r)return e;if("string"==typeof e)return new s(e);if("number"==typeof e)return new i(e);if("boolean"==typeof e)return new a(e);if(null===e)return new o;if(Array.isArray(e))return new l(e.map(g));if("object"==typeof e){return new u(e)}return e}r.prototype.ObjectElement=u,r.prototype.RefElement=h,r.prototype.MemberElement=c,r.prototype.refract=g,f.prototype.refract=g,e.exports={Element:r,NullElement:o,StringElement:s,NumberElement:i,BooleanElement:a,ArrayElement:l,MemberElement:c,ObjectElement:u,LinkElement:p,RefElement:h,refract:g,ArraySlice:f,ObjectSlice:d,KeyValuePair:m}},59964:(e,t,n)=>{const r=n(3079);e.exports=class extends r{constructor(e,t,n){super(e||[],t,n),this.element="link"}get relation(){return this.attributes.get("relation")}set relation(e){this.attributes.set("relation",e)}get href(){return this.attributes.get("href")}set href(e){this.attributes.set("href",e)}}},38588:(e,t,n)=>{const r=n(3079);e.exports=class extends r{constructor(e,t,n){super(e||[],t,n),this.element="ref",this.path||(this.path="element")}get path(){return this.attributes.get("path")}set path(e){this.attributes.set("path",e)}}},43500:(e,t,n)=>{const r=n(78520),o=n(99829);t.lS=r,n(17645),t.O4=o.ArraySlice,o.ObjectSlice,t.W_=o.Element,t.RP=o.StringElement,t.VL=o.NumberElement,t.hh=o.BooleanElement,t.zr=o.NullElement,t.ON=o.ArrayElement,t.Sb=o.ObjectElement,t.c6=o.MemberElement,t.tK=o.RefElement,t.EA=o.LinkElement,t.Qc=o.refract,n(28219),n(3414)},35804:(e,t,n)=>{const r=n(94885),o=n(3079),s=n(42566);class i extends o{constructor(e,t,n){super(e||[],t,n),this.element="array"}primitive(){return"array"}get(e){return this.content[e]}getValue(e){const t=this.get(e);if(t)return t.toValue()}getIndex(e){return this.content[e]}set(e,t){return this.content[e]=this.refract(t),this}remove(e){const t=this.content.splice(e,1);return t.length?t[0]:null}map(e,t){return this.content.map(e,t)}flatMap(e,t){return this.map(e,t).reduce(((e,t)=>e.concat(t)),[])}compactMap(e,t){const n=[];return this.forEach((r=>{const o=e.bind(t)(r);o&&n.push(o)})),n}filter(e,t){return new s(this.content.filter(e,t))}reject(e,t){return this.filter(r(e),t)}reduce(e,t){let n,r;void 0!==t?(n=0,r=this.refract(t)):(n=1,r="object"===this.primitive()?this.first.value:this.first);for(let t=n;t{e.bind(t)(n,this.refract(r))}))}shift(){return this.content.shift()}unshift(e){this.content.unshift(this.refract(e))}push(e){return this.content.push(this.refract(e)),this}add(e){this.push(e)}findElements(e,t){const n=t||{},r=!!n.recursive,o=void 0===n.results?[]:n.results;return this.forEach(((t,n,s)=>{r&&void 0!==t.findElements&&t.findElements(e,{results:o,recursive:r}),e(t,n,s)&&o.push(t)})),o}find(e){return new s(this.findElements(e,{recursive:!0}))}findByElement(e){return this.find((t=>t.element===e))}findByClass(e){return this.find((t=>t.classes.includes(e)))}getById(e){return this.find((t=>t.id.toValue()===e)).first}includes(e){return this.content.some((t=>t.equals(e)))}contains(e){return this.includes(e)}empty(){return new this.constructor([])}"fantasy-land/empty"(){return this.empty()}concat(e){return new this.constructor(this.content.concat(e.content))}"fantasy-land/concat"(e){return this.concat(e)}"fantasy-land/map"(e){return new this.constructor(this.map(e))}"fantasy-land/chain"(e){return this.map((t=>e(t)),this).reduce(((e,t)=>e.concat(t)),this.empty())}"fantasy-land/filter"(e){return new this.constructor(this.content.filter(e))}"fantasy-land/reduce"(e,t){return this.content.reduce(e,t)}get length(){return this.content.length}get isEmpty(){return 0===this.content.length}get first(){return this.getIndex(0)}get second(){return this.getIndex(1)}get last(){return this.getIndex(this.length-1)}}i.empty=function(){return new this},i["fantasy-land/empty"]=i.empty,"undefined"!=typeof Symbol&&(i.prototype[Symbol.iterator]=function(){return this.content[Symbol.iterator]()}),e.exports=i},18866:(e,t,n)=>{const r=n(3079);e.exports=class extends r{constructor(e,t,n){super(e,t,n),this.element="boolean"}primitive(){return"boolean"}}},3079:(e,t,n)=>{const r=n(18446),o=n(17645),s=n(42566);class i{constructor(e,t,n){t&&(this.meta=t),n&&(this.attributes=n),this.content=e}freeze(){Object.isFrozen(this)||(this._meta&&(this.meta.parent=this,this.meta.freeze()),this._attributes&&(this.attributes.parent=this,this.attributes.freeze()),this.children.forEach((e=>{e.parent=this,e.freeze()}),this),this.content&&Array.isArray(this.content)&&Object.freeze(this.content),Object.freeze(this))}primitive(){}clone(){const e=new this.constructor;return e.element=this.element,this.meta.length&&(e._meta=this.meta.clone()),this.attributes.length&&(e._attributes=this.attributes.clone()),this.content?this.content.clone?e.content=this.content.clone():Array.isArray(this.content)?e.content=this.content.map((e=>e.clone())):e.content=this.content:e.content=this.content,e}toValue(){return this.content instanceof i?this.content.toValue():this.content instanceof o?{key:this.content.key.toValue(),value:this.content.value?this.content.value.toValue():void 0}:this.content&&this.content.map?this.content.map((e=>e.toValue()),this):this.content}toRef(e){if(""===this.id.toValue())throw Error("Cannot create reference to an element that does not contain an ID");const t=new this.RefElement(this.id.toValue());return e&&(t.path=e),t}findRecursive(...e){if(arguments.length>1&&!this.isFrozen)throw new Error("Cannot find recursive with multiple element names without first freezing the element. Call `element.freeze()`");const t=e.pop();let n=new s;const r=(e,t)=>(e.push(t),e),i=(e,n)=>{n.element===t&&e.push(n);const s=n.findRecursive(t);return s&&s.reduce(r,e),n.content instanceof o&&(n.content.key&&i(e,n.content.key),n.content.value&&i(e,n.content.value)),e};return this.content&&(this.content.element&&i(n,this.content),Array.isArray(this.content)&&this.content.reduce(i,n)),e.isEmpty||(n=n.filter((t=>{let n=t.parents.map((e=>e.element));for(const t in e){const r=e[t],o=n.indexOf(r);if(-1===o)return!1;n=n.splice(0,o)}return!0}))),n}set(e){return this.content=e,this}equals(e){return r(this.toValue(),e)}getMetaProperty(e,t){if(!this.meta.hasKey(e)){if(this.isFrozen){const e=this.refract(t);return e.freeze(),e}this.meta.set(e,t)}return this.meta.get(e)}setMetaProperty(e,t){this.meta.set(e,t)}get element(){return this._storedElement||"element"}set element(e){this._storedElement=e}get content(){return this._content}set content(e){if(e instanceof i)this._content=e;else if(e instanceof s)this.content=e.elements;else if("string"==typeof e||"number"==typeof e||"boolean"==typeof e||"null"===e||null==e)this._content=e;else if(e instanceof o)this._content=e;else if(Array.isArray(e))this._content=e.map(this.refract);else{if("object"!=typeof e)throw new Error("Cannot set content to given value");this._content=Object.keys(e).map((t=>new this.MemberElement(t,e[t])))}}get meta(){if(!this._meta){if(this.isFrozen){const e=new this.ObjectElement;return e.freeze(),e}this._meta=new this.ObjectElement}return this._meta}set meta(e){e instanceof this.ObjectElement?this._meta=e:this.meta.set(e||{})}get attributes(){if(!this._attributes){if(this.isFrozen){const e=new this.ObjectElement;return e.freeze(),e}this._attributes=new this.ObjectElement}return this._attributes}set attributes(e){e instanceof this.ObjectElement?this._attributes=e:this.attributes.set(e||{})}get id(){return this.getMetaProperty("id","")}set id(e){this.setMetaProperty("id",e)}get classes(){return this.getMetaProperty("classes",[])}set classes(e){this.setMetaProperty("classes",e)}get title(){return this.getMetaProperty("title","")}set title(e){this.setMetaProperty("title",e)}get description(){return this.getMetaProperty("description","")}set description(e){this.setMetaProperty("description",e)}get links(){return this.getMetaProperty("links",[])}set links(e){this.setMetaProperty("links",e)}get isFrozen(){return Object.isFrozen(this)}get parents(){let{parent:e}=this;const t=new s;for(;e;)t.push(e),e=e.parent;return t}get children(){if(Array.isArray(this.content))return new s(this.content);if(this.content instanceof o){const e=new s([this.content.key]);return this.content.value&&e.push(this.content.value),e}return this.content instanceof i?new s([this.content]):new s}get recursiveChildren(){const e=new s;return this.children.forEach((t=>{e.push(t),t.recursiveChildren.forEach((t=>{e.push(t)}))})),e}}e.exports=i},5946:(e,t,n)=>{const r=n(17645),o=n(3079);e.exports=class extends o{constructor(e,t,n,o){super(new r,n,o),this.element="member",this.key=e,this.value=t}get key(){return this.content.key}set key(e){this.content.key=this.refract(e)}get value(){return this.content.value}set value(e){this.content.value=this.refract(e)}}},96295:(e,t,n)=>{const r=n(3079);e.exports=class extends r{constructor(e,t,n){super(e||null,t,n),this.element="null"}primitive(){return"null"}set(){return new Error("Cannot set the value of null")}}},91090:(e,t,n)=>{const r=n(3079);e.exports=class extends r{constructor(e,t,n){super(e,t,n),this.element="number"}primitive(){return"number"}}},76735:(e,t,n)=>{const r=n(94885),o=n(13218),s=n(35804),i=n(5946),a=n(87526);e.exports=class extends s{constructor(e,t,n){super(e||[],t,n),this.element="object"}primitive(){return"object"}toValue(){return this.content.reduce(((e,t)=>(e[t.key.toValue()]=t.value?t.value.toValue():void 0,e)),{})}get(e){const t=this.getMember(e);if(t)return t.value}getMember(e){if(void 0!==e)return this.content.find((t=>t.key.toValue()===e))}remove(e){let t=null;return this.content=this.content.filter((n=>n.key.toValue()!==e||(t=n,!1))),t}getKey(e){const t=this.getMember(e);if(t)return t.key}set(e,t){if(o(e))return Object.keys(e).forEach((t=>{this.set(t,e[t])})),this;const n=e,r=this.getMember(n);return r?r.value=t:this.content.push(new i(n,t)),this}keys(){return this.content.map((e=>e.key.toValue()))}values(){return this.content.map((e=>e.value.toValue()))}hasKey(e){return this.content.some((t=>t.key.equals(e)))}items(){return this.content.map((e=>[e.key.toValue(),e.value.toValue()]))}map(e,t){return this.content.map((n=>e.bind(t)(n.value,n.key,n)))}compactMap(e,t){const n=[];return this.forEach(((r,o,s)=>{const i=e.bind(t)(r,o,s);i&&n.push(i)})),n}filter(e,t){return new a(this.content).filter(e,t)}reject(e,t){return this.filter(r(e),t)}forEach(e,t){return this.content.forEach((n=>e.bind(t)(n.value,n.key,n)))}}},16036:(e,t,n)=>{const r=n(3079);e.exports=class extends r{constructor(e,t,n){super(e,t,n),this.element="string"}primitive(){return"string"}get length(){return this.content.length}}},3414:(e,t,n)=>{const r=n(28219);e.exports=class extends r{serialise(e){if(!(e instanceof this.namespace.elements.Element))throw new TypeError(`Given element \`${e}\` is not an Element instance`);let t;e._attributes&&e.attributes.get("variable")&&(t=e.attributes.get("variable"));const n={element:e.element};e._meta&&e._meta.length>0&&(n.meta=this.serialiseObject(e.meta));const r="enum"===e.element||-1!==e.attributes.keys().indexOf("enumerations");if(r){const t=this.enumSerialiseAttributes(e);t&&(n.attributes=t)}else if(e._attributes&&e._attributes.length>0){let{attributes:r}=e;r.get("metadata")&&(r=r.clone(),r.set("meta",r.get("metadata")),r.remove("metadata")),"member"===e.element&&t&&(r=r.clone(),r.remove("variable")),r.length>0&&(n.attributes=this.serialiseObject(r))}if(r)n.content=this.enumSerialiseContent(e,n);else if(this[`${e.element}SerialiseContent`])n.content=this[`${e.element}SerialiseContent`](e,n);else if(void 0!==e.content){let r;t&&e.content.key?(r=e.content.clone(),r.key.attributes.set("variable",t),r=this.serialiseContent(r)):r=this.serialiseContent(e.content),this.shouldSerialiseContent(e,r)&&(n.content=r)}else this.shouldSerialiseContent(e,e.content)&&e instanceof this.namespace.elements.Array&&(n.content=[]);return n}shouldSerialiseContent(e,t){return"parseResult"===e.element||"httpRequest"===e.element||"httpResponse"===e.element||"category"===e.element||"link"===e.element||void 0!==t&&(!Array.isArray(t)||0!==t.length)}refSerialiseContent(e,t){return delete t.attributes,{href:e.toValue(),path:e.path.toValue()}}sourceMapSerialiseContent(e){return e.toValue()}dataStructureSerialiseContent(e){return[this.serialiseContent(e.content)]}enumSerialiseAttributes(e){const t=e.attributes.clone(),n=t.remove("enumerations")||new this.namespace.elements.Array([]),r=t.get("default");let o=t.get("samples")||new this.namespace.elements.Array([]);if(r&&r.content&&(r.content.attributes&&r.content.attributes.remove("typeAttributes"),t.set("default",new this.namespace.elements.Array([r.content]))),o.forEach((e=>{e.content&&e.content.element&&e.content.attributes.remove("typeAttributes")})),e.content&&0!==n.length&&o.unshift(e.content),o=o.map((e=>e instanceof this.namespace.elements.Array?[e]:new this.namespace.elements.Array([e.content]))),o.length&&t.set("samples",o),t.length>0)return this.serialiseObject(t)}enumSerialiseContent(e){if(e._attributes){const t=e.attributes.get("enumerations");if(t&&t.length>0)return t.content.map((e=>{const t=e.clone();return t.attributes.remove("typeAttributes"),this.serialise(t)}))}if(e.content){const t=e.content.clone();return t.attributes.remove("typeAttributes"),[this.serialise(t)]}return[]}deserialise(e){if("string"==typeof e)return new this.namespace.elements.String(e);if("number"==typeof e)return new this.namespace.elements.Number(e);if("boolean"==typeof e)return new this.namespace.elements.Boolean(e);if(null===e)return new this.namespace.elements.Null;if(Array.isArray(e))return new this.namespace.elements.Array(e.map(this.deserialise,this));const t=this.namespace.getElementClass(e.element),n=new t;n.element!==e.element&&(n.element=e.element),e.meta&&this.deserialiseObject(e.meta,n.meta),e.attributes&&this.deserialiseObject(e.attributes,n.attributes);const r=this.deserialiseContent(e.content);if(void 0===r&&null!==n.content||(n.content=r),"enum"===n.element){n.content&&n.attributes.set("enumerations",n.content);let e=n.attributes.get("samples");if(n.attributes.remove("samples"),e){const r=e;e=new this.namespace.elements.Array,r.forEach((r=>{r.forEach((r=>{const o=new t(r);o.element=n.element,e.push(o)}))}));const o=e.shift();n.content=o?o.content:void 0,n.attributes.set("samples",e)}else n.content=void 0;let r=n.attributes.get("default");if(r&&r.length>0){r=r.get(0);const e=new t(r);e.element=n.element,n.attributes.set("default",e)}}else if("dataStructure"===n.element&&Array.isArray(n.content))[n.content]=n.content;else if("category"===n.element){const e=n.attributes.get("meta");e&&(n.attributes.set("metadata",e),n.attributes.remove("meta"))}else"member"===n.element&&n.key&&n.key._attributes&&n.key._attributes.getValue("variable")&&(n.attributes.set("variable",n.key.attributes.get("variable")),n.key.attributes.remove("variable"));return n}serialiseContent(e){if(e instanceof this.namespace.elements.Element)return this.serialise(e);if(e instanceof this.namespace.KeyValuePair){const t={key:this.serialise(e.key)};return e.value&&(t.value=this.serialise(e.value)),t}return e&&e.map?e.map(this.serialise,this):e}deserialiseContent(e){if(e){if(e.element)return this.deserialise(e);if(e.key){const t=new this.namespace.KeyValuePair(this.deserialise(e.key));return e.value&&(t.value=this.deserialise(e.value)),t}if(e.map)return e.map(this.deserialise,this)}return e}shouldRefract(e){return!!(e._attributes&&e.attributes.keys().length||e._meta&&e.meta.keys().length)||"enum"!==e.element&&(e.element!==e.primitive()||"member"===e.element)}convertKeyToRefract(e,t){return this.shouldRefract(t)?this.serialise(t):"enum"===t.element?this.serialiseEnum(t):"array"===t.element?t.map((t=>this.shouldRefract(t)||"default"===e?this.serialise(t):"array"===t.element||"object"===t.element||"enum"===t.element?t.children.map((e=>this.serialise(e))):t.toValue())):"object"===t.element?(t.content||[]).map(this.serialise,this):t.toValue()}serialiseEnum(e){return e.children.map((e=>this.serialise(e)))}serialiseObject(e){const t={};return e.forEach(((e,n)=>{if(e){const r=n.toValue();t[r]=this.convertKeyToRefract(r,e)}})),t}deserialiseObject(e,t){Object.keys(e).forEach((n=>{t.set(n,this.deserialise(e[n]))}))}}},28219:e=>{e.exports=class{constructor(e){this.namespace=e||new this.Namespace}serialise(e){if(!(e instanceof this.namespace.elements.Element))throw new TypeError(`Given element \`${e}\` is not an Element instance`);const t={element:e.element};e._meta&&e._meta.length>0&&(t.meta=this.serialiseObject(e.meta)),e._attributes&&e._attributes.length>0&&(t.attributes=this.serialiseObject(e.attributes));const n=this.serialiseContent(e.content);return void 0!==n&&(t.content=n),t}deserialise(e){if(!e.element)throw new Error("Given value is not an object containing an element name");const t=new(this.namespace.getElementClass(e.element));t.element!==e.element&&(t.element=e.element),e.meta&&this.deserialiseObject(e.meta,t.meta),e.attributes&&this.deserialiseObject(e.attributes,t.attributes);const n=this.deserialiseContent(e.content);return void 0===n&&null!==t.content||(t.content=n),t}serialiseContent(e){if(e instanceof this.namespace.elements.Element)return this.serialise(e);if(e instanceof this.namespace.KeyValuePair){const t={key:this.serialise(e.key)};return e.value&&(t.value=this.serialise(e.value)),t}if(e&&e.map){if(0===e.length)return;return e.map(this.serialise,this)}return e}deserialiseContent(e){if(e){if(e.element)return this.deserialise(e);if(e.key){const t=new this.namespace.KeyValuePair(this.deserialise(e.key));return e.value&&(t.value=this.deserialise(e.value)),t}if(e.map)return e.map(this.deserialise,this)}return e}serialiseObject(e){const t={};if(e.forEach(((e,n)=>{e&&(t[n.toValue()]=this.serialise(e))})),0!==Object.keys(t).length)return t}deserialiseObject(e,t){Object.keys(e).forEach((n=>{t.set(n,this.deserialise(e[n]))}))}}},27418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,o){for(var s,i,a=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),l=1;l{var r="function"==typeof Map&&Map.prototype,o=Object.getOwnPropertyDescriptor&&r?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,s=r&&o&&"function"==typeof o.get?o.get:null,i=r&&Map.prototype.forEach,a="function"==typeof Set&&Set.prototype,l=Object.getOwnPropertyDescriptor&&a?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,c=a&&l&&"function"==typeof l.get?l.get:null,u=a&&Set.prototype.forEach,p="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,h="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,f="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,d=Boolean.prototype.valueOf,m=Object.prototype.toString,g=Function.prototype.toString,y=String.prototype.match,v=String.prototype.slice,b=String.prototype.replace,w=String.prototype.toUpperCase,E=String.prototype.toLowerCase,x=RegExp.prototype.test,S=Array.prototype.concat,_=Array.prototype.join,j=Array.prototype.slice,O=Math.floor,k="function"==typeof BigInt?BigInt.prototype.valueOf:null,A=Object.getOwnPropertySymbols,C="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,P="function"==typeof Symbol&&"object"==typeof Symbol.iterator,N="function"==typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===P||"symbol")?Symbol.toStringTag:null,I=Object.prototype.propertyIsEnumerable,T=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null);function R(e,t){if(e===1/0||e===-1/0||e!=e||e&&e>-1e3&&e<1e3||x.call(/e/,t))return t;var n=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof e){var r=e<0?-O(-e):O(e);if(r!==e){var o=String(r),s=v.call(t,o.length+1);return b.call(o,n,"$&_")+"."+b.call(b.call(s,/([0-9]{3})/g,"$&_"),/_$/,"")}}return b.call(t,n,"$&_")}var M=n(24654),D=M.custom,F=U(D)?D:null;function L(e,t,n){var r="double"===(n.quoteStyle||t)?'"':"'";return r+e+r}function B(e){return b.call(String(e),/"/g,""")}function $(e){return!("[object Array]"!==W(e)||N&&"object"==typeof e&&N in e)}function q(e){return!("[object RegExp]"!==W(e)||N&&"object"==typeof e&&N in e)}function U(e){if(P)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!C)return!1;try{return C.call(e),!0}catch(e){}return!1}e.exports=function e(t,n,r,o){var a=n||{};if(V(a,"quoteStyle")&&"single"!==a.quoteStyle&&"double"!==a.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(V(a,"maxStringLength")&&("number"==typeof a.maxStringLength?a.maxStringLength<0&&a.maxStringLength!==1/0:null!==a.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var l=!V(a,"customInspect")||a.customInspect;if("boolean"!=typeof l&&"symbol"!==l)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(V(a,"indent")&&null!==a.indent&&"\t"!==a.indent&&!(parseInt(a.indent,10)===a.indent&&a.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(V(a,"numericSeparator")&&"boolean"!=typeof a.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var m=a.numericSeparator;if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return K(t,a);if("number"==typeof t){if(0===t)return 1/0/t>0?"0":"-0";var w=String(t);return m?R(t,w):w}if("bigint"==typeof t){var x=String(t)+"n";return m?R(t,x):x}var O=void 0===a.depth?5:a.depth;if(void 0===r&&(r=0),r>=O&&O>0&&"object"==typeof t)return $(t)?"[Array]":"[Object]";var A=function(e,t){var n;if("\t"===e.indent)n="\t";else{if(!("number"==typeof e.indent&&e.indent>0))return null;n=_.call(Array(e.indent+1)," ")}return{base:n,prev:_.call(Array(t+1),n)}}(a,r);if(void 0===o)o=[];else if(J(o,t)>=0)return"[Circular]";function D(t,n,s){if(n&&(o=j.call(o)).push(n),s){var i={depth:a.depth};return V(a,"quoteStyle")&&(i.quoteStyle=a.quoteStyle),e(t,i,r+1,o)}return e(t,a,r+1,o)}if("function"==typeof t&&!q(t)){var z=function(e){if(e.name)return e.name;var t=y.call(g.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),H=Q(t,D);return"[Function"+(z?": "+z:" (anonymous)")+"]"+(H.length>0?" { "+_.call(H,", ")+" }":"")}if(U(t)){var ee=P?b.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):C.call(t);return"object"!=typeof t||P?ee:G(ee)}if(function(e){if(!e||"object"!=typeof e)return!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement)return!0;return"string"==typeof e.nodeName&&"function"==typeof e.getAttribute}(t)){for(var te="<"+E.call(String(t.nodeName)),ne=t.attributes||[],re=0;re"}if($(t)){if(0===t.length)return"[]";var oe=Q(t,D);return A&&!function(e){for(var t=0;t=0)return!1;return!0}(oe)?"["+X(oe,A)+"]":"[ "+_.call(oe,", ")+" ]"}if(function(e){return!("[object Error]"!==W(e)||N&&"object"==typeof e&&N in e)}(t)){var se=Q(t,D);return"cause"in Error.prototype||!("cause"in t)||I.call(t,"cause")?0===se.length?"["+String(t)+"]":"{ ["+String(t)+"] "+_.call(se,", ")+" }":"{ ["+String(t)+"] "+_.call(S.call("[cause]: "+D(t.cause),se),", ")+" }"}if("object"==typeof t&&l){if(F&&"function"==typeof t[F]&&M)return M(t,{depth:O-r});if("symbol"!==l&&"function"==typeof t.inspect)return t.inspect()}if(function(e){if(!s||!e||"object"!=typeof e)return!1;try{s.call(e);try{c.call(e)}catch(e){return!0}return e instanceof Map}catch(e){}return!1}(t)){var ie=[];return i&&i.call(t,(function(e,n){ie.push(D(n,t,!0)+" => "+D(e,t))})),Y("Map",s.call(t),ie,A)}if(function(e){if(!c||!e||"object"!=typeof e)return!1;try{c.call(e);try{s.call(e)}catch(e){return!0}return e instanceof Set}catch(e){}return!1}(t)){var ae=[];return u&&u.call(t,(function(e){ae.push(D(e,t))})),Y("Set",c.call(t),ae,A)}if(function(e){if(!p||!e||"object"!=typeof e)return!1;try{p.call(e,p);try{h.call(e,h)}catch(e){return!0}return e instanceof WeakMap}catch(e){}return!1}(t))return Z("WeakMap");if(function(e){if(!h||!e||"object"!=typeof e)return!1;try{h.call(e,h);try{p.call(e,p)}catch(e){return!0}return e instanceof WeakSet}catch(e){}return!1}(t))return Z("WeakSet");if(function(e){if(!f||!e||"object"!=typeof e)return!1;try{return f.call(e),!0}catch(e){}return!1}(t))return Z("WeakRef");if(function(e){return!("[object Number]"!==W(e)||N&&"object"==typeof e&&N in e)}(t))return G(D(Number(t)));if(function(e){if(!e||"object"!=typeof e||!k)return!1;try{return k.call(e),!0}catch(e){}return!1}(t))return G(D(k.call(t)));if(function(e){return!("[object Boolean]"!==W(e)||N&&"object"==typeof e&&N in e)}(t))return G(d.call(t));if(function(e){return!("[object String]"!==W(e)||N&&"object"==typeof e&&N in e)}(t))return G(D(String(t)));if(!function(e){return!("[object Date]"!==W(e)||N&&"object"==typeof e&&N in e)}(t)&&!q(t)){var le=Q(t,D),ce=T?T(t)===Object.prototype:t instanceof Object||t.constructor===Object,ue=t instanceof Object?"":"null prototype",pe=!ce&&N&&Object(t)===t&&N in t?v.call(W(t),8,-1):ue?"Object":"",he=(ce||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(pe||ue?"["+_.call(S.call([],pe||[],ue||[]),": ")+"] ":"");return 0===le.length?he+"{}":A?he+"{"+X(le,A)+"}":he+"{ "+_.call(le,", ")+" }"}return String(t)};var z=Object.prototype.hasOwnProperty||function(e){return e in this};function V(e,t){return z.call(e,t)}function W(e){return m.call(e)}function J(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0,r=e.length;nt.maxStringLength){var n=e.length-t.maxStringLength,r="... "+n+" more character"+(n>1?"s":"");return K(v.call(e,0,t.maxStringLength),t)+r}return L(b.call(b.call(e,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,H),"single",t)}function H(e){var t=e.charCodeAt(0),n={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return n?"\\"+n:"\\x"+(t<16?"0":"")+w.call(t.toString(16))}function G(e){return"Object("+e+")"}function Z(e){return e+" { ? }"}function Y(e,t,n,r){return e+" ("+t+") {"+(r?X(n,r):_.call(n,", "))+"}"}function X(e,t){if(0===e.length)return"";var n="\n"+t.prev+t.base;return n+_.call(e,","+n)+"\n"+t.prev}function Q(e,t){var n=$(e),r=[];if(n){r.length=e.length;for(var o=0;o{var t,n,r=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function i(e){if(t===setTimeout)return setTimeout(e,0);if((t===o||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(n){try{return t.call(null,e,0)}catch(n){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:o}catch(e){t=o}try{n="function"==typeof clearTimeout?clearTimeout:s}catch(e){n=s}}();var a,l=[],c=!1,u=-1;function p(){c&&a&&(c=!1,a.length?l=a.concat(l):u=-1,l.length&&h())}function h(){if(!c){var e=i(p);c=!0;for(var t=l.length;t;){for(a=l,l=[];++u1)for(var n=1;n{"use strict";var r=n(50414);function o(){}function s(){}s.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,s,i){if(i!==r){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:s,resetWarningCache:o};return n.PropTypes=n,n}},45697:(e,t,n)=>{e.exports=n(92703)()},50414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},55798:e=>{"use strict";var t=String.prototype.replace,n=/%20/g,r="RFC1738",o="RFC3986";e.exports={default:o,formatters:{RFC1738:function(e){return t.call(e,n,"+")},RFC3986:function(e){return String(e)}},RFC1738:r,RFC3986:o}},80129:(e,t,n)=>{"use strict";var r=n(58261),o=n(55235),s=n(55798);e.exports={formats:s,parse:o,stringify:r}},55235:(e,t,n)=>{"use strict";var r=n(12769),o=Object.prototype.hasOwnProperty,s=Array.isArray,i={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:r.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},a=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},l=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},c=function(e,t,n,r){if(e){var s=n.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,i=/(\[[^[\]]*])/g,a=n.depth>0&&/(\[[^[\]]*])/.exec(s),c=a?s.slice(0,a.index):s,u=[];if(c){if(!n.plainObjects&&o.call(Object.prototype,c)&&!n.allowPrototypes)return;u.push(c)}for(var p=0;n.depth>0&&null!==(a=i.exec(s))&&p=0;--s){var i,a=e[s];if("[]"===a&&n.parseArrays)i=[].concat(o);else{i=n.plainObjects?Object.create(null):{};var c="["===a.charAt(0)&&"]"===a.charAt(a.length-1)?a.slice(1,-1):a,u=parseInt(c,10);n.parseArrays||""!==c?!isNaN(u)&&a!==c&&String(u)===c&&u>=0&&n.parseArrays&&u<=n.arrayLimit?(i=[])[u]=o:"__proto__"!==c&&(i[c]=o):i={0:o}}o=i}return o}(u,t,n,r)}};e.exports=function(e,t){var n=function(e){if(!e)return i;if(null!==e.decoder&&void 0!==e.decoder&&"function"!=typeof e.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t=void 0===e.charset?i.charset:e.charset;return{allowDots:void 0===e.allowDots?i.allowDots:!!e.allowDots,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:i.allowPrototypes,allowSparse:"boolean"==typeof e.allowSparse?e.allowSparse:i.allowSparse,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:i.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:i.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:i.comma,decoder:"function"==typeof e.decoder?e.decoder:i.decoder,delimiter:"string"==typeof e.delimiter||r.isRegExp(e.delimiter)?e.delimiter:i.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:i.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:i.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:i.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:i.plainObjects,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:i.strictNullHandling}}(t);if(""===e||null==e)return n.plainObjects?Object.create(null):{};for(var u="string"==typeof e?function(e,t){var n,c={},u=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,p=t.parameterLimit===1/0?void 0:t.parameterLimit,h=u.split(t.delimiter,p),f=-1,d=t.charset;if(t.charsetSentinel)for(n=0;n-1&&(g=s(g)?[g]:g),o.call(c,m)?c[m]=r.combine(c[m],g):c[m]=g}return c}(e,n):e,p=n.plainObjects?Object.create(null):{},h=Object.keys(u),f=0;f{"use strict";var r=n(37478),o=n(12769),s=n(55798),i=Object.prototype.hasOwnProperty,a={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},l=Array.isArray,c=String.prototype.split,u=Array.prototype.push,p=function(e,t){u.apply(e,l(t)?t:[t])},h=Date.prototype.toISOString,f=s.default,d={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:o.encode,encodeValuesOnly:!1,format:f,formatter:s.formatters[f],indices:!1,serializeDate:function(e){return h.call(e)},skipNulls:!1,strictNullHandling:!1},m={},g=function e(t,n,s,i,a,u,h,f,g,y,v,b,w,E,x,S){for(var _,j=t,O=S,k=0,A=!1;void 0!==(O=O.get(m))&&!A;){var C=O.get(t);if(k+=1,void 0!==C){if(C===k)throw new RangeError("Cyclic object value");A=!0}void 0===O.get(m)&&(k=0)}if("function"==typeof f?j=f(n,j):j instanceof Date?j=v(j):"comma"===s&&l(j)&&(j=o.maybeMap(j,(function(e){return e instanceof Date?v(e):e}))),null===j){if(a)return h&&!E?h(n,d.encoder,x,"key",b):n;j=""}if("string"==typeof(_=j)||"number"==typeof _||"boolean"==typeof _||"symbol"==typeof _||"bigint"==typeof _||o.isBuffer(j)){if(h){var P=E?n:h(n,d.encoder,x,"key",b);if("comma"===s&&E){for(var N=c.call(String(j),","),I="",T=0;T0?j.join(",")||null:void 0}];else if(l(f))R=f;else{var D=Object.keys(j);R=g?D.sort(g):D}for(var F=i&&l(j)&&1===j.length?n+"[]":n,L=0;L0?E+w:""}},12769:(e,t,n)=>{"use strict";var r=n(55798),o=Object.prototype.hasOwnProperty,s=Array.isArray,i=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),a=function(e,t){for(var n=t&&t.plainObjects?Object.create(null):{},r=0;r1;){var t=e.pop(),n=t.obj[t.prop];if(s(n)){for(var r=[],o=0;o=48&&u<=57||u>=65&&u<=90||u>=97&&u<=122||s===r.RFC1738&&(40===u||41===u)?l+=a.charAt(c):u<128?l+=i[u]:u<2048?l+=i[192|u>>6]+i[128|63&u]:u<55296||u>=57344?l+=i[224|u>>12]+i[128|u>>6&63]+i[128|63&u]:(c+=1,u=65536+((1023&u)<<10|1023&a.charCodeAt(c)),l+=i[240|u>>18]+i[128|u>>12&63]+i[128|u>>6&63]+i[128|63&u])}return l},isBuffer:function(e){return!(!e||"object"!=typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(s(e)){for(var n=[],r=0;r{"use strict";var n=Object.prototype.hasOwnProperty;function r(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(e){return null}}function o(e){try{return encodeURIComponent(e)}catch(e){return null}}t.stringify=function(e,t){t=t||"";var r,s,i=[];for(s in"string"!=typeof t&&(t="?"),e)if(n.call(e,s)){if((r=e[s])||null!=r&&!isNaN(r)||(r=""),s=o(s),r=o(r),null===s||null===r)continue;i.push(s+"="+r)}return i.length?t+i.join("&"):""},t.parse=function(e){for(var t,n=/([^=?#&]+)=?([^&]*)/g,o={};t=n.exec(e);){var s=r(t[1]),i=r(t[2]);null===s||null===i||s in o||(o[s]=i)}return o}},14419:(e,t,n)=>{const r=n(60697),o=n(69450),s=r.types;e.exports=class e{constructor(e,t){if(this._setDefaults(e),e instanceof RegExp)this.ignoreCase=e.ignoreCase,this.multiline=e.multiline,e=e.source;else{if("string"!=typeof e)throw new Error("Expected a regexp or string");this.ignoreCase=t&&-1!==t.indexOf("i"),this.multiline=t&&-1!==t.indexOf("m")}this.tokens=r(e)}_setDefaults(t){this.max=null!=t.max?t.max:null!=e.prototype.max?e.prototype.max:100,this.defaultRange=t.defaultRange?t.defaultRange:this.defaultRange.clone(),t.randInt&&(this.randInt=t.randInt)}gen(){return this._gen(this.tokens,[])}_gen(e,t){var n,r,o,i,a;switch(e.type){case s.ROOT:case s.GROUP:if(e.followedBy||e.notFollowedBy)return"";for(e.remember&&void 0===e.groupNumber&&(e.groupNumber=t.push(null)-1),r="",i=0,a=(n=e.options?this._randSelect(e.options):e.stack).length;i{"use strict";var r=n(34155),o=65536,s=4294967295;var i=n(89509).Buffer,a=n.g.crypto||n.g.msCrypto;a&&a.getRandomValues?e.exports=function(e,t){if(e>s)throw new RangeError("requested too many random bytes");var n=i.allocUnsafe(e);if(e>0)if(e>o)for(var l=0;l{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var o=a(n(67294)),s=a(n(20640)),i=["text","onCopy","options","children"];function a(e){return e&&e.__esModule?e:{default:e}}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function p(e,t){for(var n=0;n{"use strict";var r=n(74300).CopyToClipboard;r.CopyToClipboard=r,e.exports=r},53441:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.DebounceInput=void 0;var o=a(n(67294)),s=a(n(91296)),i=["element","onChange","value","minLength","debounceTimeout","forceNotifyByEnter","forceNotifyOnBlur","onKeyDown","onBlur","inputRef"];function a(e){return e&&e.__esModule?e:{default:e}}function l(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},s=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function u(e){for(var t=1;t=r?t.notify(e):n.length>o.length&&t.notify(u(u({},e),{},{target:u(u({},e.target),{},{value:""})}))}))})),g(d(t),"onKeyDown",(function(e){"Enter"===e.key&&t.forceNotify(e);var n=t.props.onKeyDown;n&&(e.persist(),n(e))})),g(d(t),"onBlur",(function(e){t.forceNotify(e);var n=t.props.onBlur;n&&(e.persist(),n(e))})),g(d(t),"createNotifier",(function(e){if(e<0)t.notify=function(){return null};else if(0===e)t.notify=t.doNotify;else{var n=(0,s.default)((function(e){t.isDebouncing=!1,t.doNotify(e)}),e);t.notify=function(e){t.isDebouncing=!0,n(e)},t.flush=function(){return n.flush()},t.cancel=function(){t.isDebouncing=!1,n.cancel()}}})),g(d(t),"doNotify",(function(){t.props.onChange.apply(void 0,arguments)})),g(d(t),"forceNotify",(function(e){var n=t.props.debounceTimeout;if(t.isDebouncing||!(n>0)){t.cancel&&t.cancel();var r=t.state.value,o=t.props.minLength;r.length>=o?t.doNotify(e):t.doNotify(u(u({},e),{},{target:u(u({},e.target),{},{value:r})}))}})),t.isDebouncing=!1,t.state={value:void 0===e.value||null===e.value?"":e.value};var n=t.props.debounceTimeout;return t.createNotifier(n),t}return t=c,(n=[{key:"componentDidUpdate",value:function(e){if(!this.isDebouncing){var t=this.props,n=t.value,r=t.debounceTimeout,o=e.debounceTimeout,s=e.value,i=this.state.value;void 0!==n&&s!==n&&i!==n&&this.setState({value:n}),r!==o&&this.createNotifier(r)}}},{key:"componentWillUnmount",value:function(){this.flush&&this.flush()}},{key:"render",value:function(){var e,t,n=this.props,r=n.element,s=(n.onChange,n.value,n.minLength,n.debounceTimeout,n.forceNotifyByEnter),a=n.forceNotifyOnBlur,c=n.onKeyDown,p=n.onBlur,h=n.inputRef,f=l(n,i),d=this.state.value;e=s?{onKeyDown:this.onKeyDown}:c?{onKeyDown:c}:{},t=a?{onBlur:this.onBlur}:p?{onBlur:p}:{};var m=h?{ref:h}:{};return o.default.createElement(r,u(u(u(u({},f),{},{onChange:this.onChange,value:d},e),t),m))}}])&&p(t.prototype,n),r&&p(t,r),Object.defineProperty(t,"prototype",{writable:!1}),c}(o.default.PureComponent);t.DebounceInput=y,g(y,"defaultProps",{element:"input",type:"text",onKeyDown:void 0,onBlur:void 0,value:void 0,minLength:0,debounceTimeout:100,forceNotifyByEnter:!0,forceNotifyOnBlur:!0,inputRef:void 0})},775:(e,t,n)=>{"use strict";var r=n(53441).DebounceInput;r.DebounceInput=r,e.exports=r},64448:(e,t,n)=>{"use strict";var r=n(67294),o=n(27418),s=n(63840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n
")}value(){return this.buffer}span(s){this.buffer+=``}}class TokenTree{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(s){this.top.children.push(s)}openNode(s){const o={kind:s,children:[]};this.add(o),this.stack.push(o)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(s){return this.constructor._walk(s,this.rootNode)}static _walk(s,o){return"string"==typeof o?s.addText(o):o.children&&(s.openNode(o),o.children.forEach((o=>this._walk(s,o))),s.closeNode(o)),s}static _collapse(s){"string"!=typeof s&&s.children&&(s.children.every((s=>"string"==typeof s))?s.children=[s.children.join("")]:s.children.forEach((s=>{TokenTree._collapse(s)})))}}class TokenTreeEmitter extends TokenTree{constructor(s){super(),this.options=s}addKeyword(s,o){""!==s&&(this.openNode(o),this.addText(s),this.closeNode())}addText(s){""!==s&&this.add(s)}addSublanguage(s,o){const i=s.root;i.kind=o,i.sublanguage=!0,this.add(i)}toHTML(){return new HTMLRenderer(this,this.options).value()}finalize(){return!0}}function source(s){return s?"string"==typeof s?s:s.source:null}const a=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;const u="[a-zA-Z]\\w*",_="[a-zA-Z_]\\w*",w="\\b\\d+(\\.\\d+)?",x="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",C="\\b(0b[01]+)",j={begin:"\\\\[\\s\\S]",relevance:0},L={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[j]},B={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[j]},$={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},COMMENT=function(s,o,i={}){const a=inherit({className:"comment",begin:s,end:o,contains:[]},i);return a.contains.push($),a.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),a},V=COMMENT("//","$"),z=COMMENT("/\\*","\\*/"),U=COMMENT("#","$"),Y={className:"number",begin:w,relevance:0},Z={className:"number",begin:x,relevance:0},ee={className:"number",begin:C,relevance:0},ie={className:"number",begin:w+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},ae={begin:/(?=\/[^/\n]*\/)/,contains:[{className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[j,{begin:/\[/,end:/\]/,relevance:0,contains:[j]}]}]},ce={className:"title",begin:u,relevance:0},le={className:"title",begin:_,relevance:0},pe={begin:"\\.\\s*"+_,relevance:0};var de=Object.freeze({__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:u,UNDERSCORE_IDENT_RE:_,NUMBER_RE:w,C_NUMBER_RE:x,BINARY_NUMBER_RE:C,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(s={})=>{const o=/^#![ ]*\//;return s.binary&&(s.begin=function concat(...s){return s.map((s=>source(s))).join("")}(o,/.*\b/,s.binary,/\b.*/)),inherit({className:"meta",begin:o,end:/$/,relevance:0,"on:begin":(s,o)=>{0!==s.index&&o.ignoreMatch()}},s)},BACKSLASH_ESCAPE:j,APOS_STRING_MODE:L,QUOTE_STRING_MODE:B,PHRASAL_WORDS_MODE:$,COMMENT,C_LINE_COMMENT_MODE:V,C_BLOCK_COMMENT_MODE:z,HASH_COMMENT_MODE:U,NUMBER_MODE:Y,C_NUMBER_MODE:Z,BINARY_NUMBER_MODE:ee,CSS_NUMBER_MODE:ie,REGEXP_MODE:ae,TITLE_MODE:ce,UNDERSCORE_TITLE_MODE:le,METHOD_GUARD:pe,END_SAME_AS_BEGIN:function(s){return Object.assign(s,{"on:begin":(s,o)=>{o.data._beginMatch=s[1]},"on:end":(s,o)=>{o.data._beginMatch!==s[1]&&o.ignoreMatch()}})}});function skipIfhasPrecedingDot(s,o){"."===s.input[s.index-1]&&o.ignoreMatch()}function beginKeywords(s,o){o&&s.beginKeywords&&(s.begin="\\b("+s.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",s.__beforeBegin=skipIfhasPrecedingDot,s.keywords=s.keywords||s.beginKeywords,delete s.beginKeywords,void 0===s.relevance&&(s.relevance=0))}function compileIllegal(s,o){Array.isArray(s.illegal)&&(s.illegal=function either(...s){return"("+s.map((s=>source(s))).join("|")+")"}(...s.illegal))}function compileMatch(s,o){if(s.match){if(s.begin||s.end)throw new Error("begin & end are not supported with match");s.begin=s.match,delete s.match}}function compileRelevance(s,o){void 0===s.relevance&&(s.relevance=1)}const fe=["of","and","for","in","not","or","if","then","parent","list","value"];function compileKeywords(s,o,i="keyword"){const a={};return"string"==typeof s?compileList(i,s.split(" ")):Array.isArray(s)?compileList(i,s):Object.keys(s).forEach((function(i){Object.assign(a,compileKeywords(s[i],o,i))})),a;function compileList(s,i){o&&(i=i.map((s=>s.toLowerCase()))),i.forEach((function(o){const i=o.split("|");a[i[0]]=[s,scoreForKeyword(i[0],i[1])]}))}}function scoreForKeyword(s,o){return o?Number(o):function commonKeyword(s){return fe.includes(s.toLowerCase())}(s)?0:1}function compileLanguage(s,{plugins:o}){function langRe(o,i){return new RegExp(source(o),"m"+(s.case_insensitive?"i":"")+(i?"g":""))}class MultiRegex{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(s,o){o.position=this.position++,this.matchIndexes[this.matchAt]=o,this.regexes.push([o,s]),this.matchAt+=function countMatchGroups(s){return new RegExp(s.toString()+"|").exec("").length-1}(s)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const s=this.regexes.map((s=>s[1]));this.matcherRe=langRe(function join(s,o="|"){let i=0;return s.map((s=>{i+=1;const o=i;let u=source(s),_="";for(;u.length>0;){const s=a.exec(u);if(!s){_+=u;break}_+=u.substring(0,s.index),u=u.substring(s.index+s[0].length),"\\"===s[0][0]&&s[1]?_+="\\"+String(Number(s[1])+o):(_+=s[0],"("===s[0]&&i++)}return _})).map((s=>`(${s})`)).join(o)}(s),!0),this.lastIndex=0}exec(s){this.matcherRe.lastIndex=this.lastIndex;const o=this.matcherRe.exec(s);if(!o)return null;const i=o.findIndex(((s,o)=>o>0&&void 0!==s)),a=this.matchIndexes[i];return o.splice(0,i),Object.assign(o,a)}}class ResumableMultiRegex{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(s){if(this.multiRegexes[s])return this.multiRegexes[s];const o=new MultiRegex;return this.rules.slice(s).forEach((([s,i])=>o.addRule(s,i))),o.compile(),this.multiRegexes[s]=o,o}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(s,o){this.rules.push([s,o]),"begin"===o.type&&this.count++}exec(s){const o=this.getMatcher(this.regexIndex);o.lastIndex=this.lastIndex;let i=o.exec(s);if(this.resumingScanAtSamePosition())if(i&&i.index===this.lastIndex);else{const o=this.getMatcher(0);o.lastIndex=this.lastIndex+1,i=o.exec(s)}return i&&(this.regexIndex+=i.position+1,this.regexIndex===this.count&&this.considerAll()),i}}if(s.compilerExtensions||(s.compilerExtensions=[]),s.contains&&s.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return s.classNameAliases=inherit(s.classNameAliases||{}),function compileMode(o,i){const a=o;if(o.isCompiled)return a;[compileMatch].forEach((s=>s(o,i))),s.compilerExtensions.forEach((s=>s(o,i))),o.__beforeBegin=null,[beginKeywords,compileIllegal,compileRelevance].forEach((s=>s(o,i))),o.isCompiled=!0;let u=null;if("object"==typeof o.keywords&&(u=o.keywords.$pattern,delete o.keywords.$pattern),o.keywords&&(o.keywords=compileKeywords(o.keywords,s.case_insensitive)),o.lexemes&&u)throw new Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ");return u=u||o.lexemes||/\w+/,a.keywordPatternRe=langRe(u,!0),i&&(o.begin||(o.begin=/\B|\b/),a.beginRe=langRe(o.begin),o.endSameAsBegin&&(o.end=o.begin),o.end||o.endsWithParent||(o.end=/\B|\b/),o.end&&(a.endRe=langRe(o.end)),a.terminatorEnd=source(o.end)||"",o.endsWithParent&&i.terminatorEnd&&(a.terminatorEnd+=(o.end?"|":"")+i.terminatorEnd)),o.illegal&&(a.illegalRe=langRe(o.illegal)),o.contains||(o.contains=[]),o.contains=[].concat(...o.contains.map((function(s){return function expandOrCloneMode(s){s.variants&&!s.cachedVariants&&(s.cachedVariants=s.variants.map((function(o){return inherit(s,{variants:null},o)})));if(s.cachedVariants)return s.cachedVariants;if(dependencyOnParent(s))return inherit(s,{starts:s.starts?inherit(s.starts):null});if(Object.isFrozen(s))return inherit(s);return s}("self"===s?o:s)}))),o.contains.forEach((function(s){compileMode(s,a)})),o.starts&&compileMode(o.starts,i),a.matcher=function buildModeRegex(s){const o=new ResumableMultiRegex;return s.contains.forEach((s=>o.addRule(s.begin,{rule:s,type:"begin"}))),s.terminatorEnd&&o.addRule(s.terminatorEnd,{type:"end"}),s.illegal&&o.addRule(s.illegal,{type:"illegal"}),o}(a),a}(s)}function dependencyOnParent(s){return!!s&&(s.endsWithParent||dependencyOnParent(s.starts))}function BuildVuePlugin(s){const o={props:["language","code","autodetect"],data:function(){return{detectedLanguage:"",unknownLanguage:!1}},computed:{className(){return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){if(!this.autoDetect&&!s.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`),this.unknownLanguage=!0,escapeHTML(this.code);let o={};return this.autoDetect?(o=s.highlightAuto(this.code),this.detectedLanguage=o.language):(o=s.highlight(this.language,this.code,this.ignoreIllegals),this.detectedLanguage=this.language),o.value},autoDetect(){return!this.language||function hasValueOrEmptyAttribute(s){return Boolean(s||""===s)}(this.autodetect)},ignoreIllegals:()=>!0},render(s){return s("pre",{},[s("code",{class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{Component:o,VuePlugin:{install(s){s.component("highlightjs",o)}}}}const ye={"after:highlightElement":({el:s,result:o,text:i})=>{const a=nodeStream(s);if(!a.length)return;const u=document.createElement("div");u.innerHTML=o.value,o.value=function mergeStreams(s,o,i){let a=0,u="";const _=[];function selectStream(){return s.length&&o.length?s[0].offset!==o[0].offset?s[0].offset"}function close(s){u+=""}function render(s){("start"===s.event?open:close)(s.node)}for(;s.length||o.length;){let o=selectStream();if(u+=escapeHTML(i.substring(a,o[0].offset)),a=o[0].offset,o===s){_.reverse().forEach(close);do{render(o.splice(0,1)[0]),o=selectStream()}while(o===s&&o.length&&o[0].offset===a);_.reverse().forEach(open)}else"start"===o[0].event?_.push(o[0].node):_.pop(),render(o.splice(0,1)[0])}return u+escapeHTML(i.substr(a))}(a,nodeStream(u),i)}};function tag(s){return s.nodeName.toLowerCase()}function nodeStream(s){const o=[];return function _nodeStream(s,i){for(let a=s.firstChild;a;a=a.nextSibling)3===a.nodeType?i+=a.nodeValue.length:1===a.nodeType&&(o.push({event:"start",offset:i,node:a}),i=_nodeStream(a,i),tag(a).match(/br|hr|img|input/)||o.push({event:"stop",offset:i,node:a}));return i}(s,0),o}const be={},error=s=>{console.error(s)},warn=(s,...o)=>{console.log(`WARN: ${s}`,...o)},deprecated=(s,o)=>{be[`${s}/${o}`]||(console.log(`Deprecated as of ${s}. ${o}`),be[`${s}/${o}`]=!0)},Se=escapeHTML,_e=inherit,we=Symbol("nomatch");var xe=function(s){const i=Object.create(null),a=Object.create(null),u=[];let _=!0;const w=/(^(<[^>]+>|\t|)+|\n)/gm,x="Could not find the language '{}', did you forget to load/include a language module?",C={disableAutodetect:!0,name:"Plain text",contains:[]};let j={noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:null,__emitter:TokenTreeEmitter};function shouldNotHighlight(s){return j.noHighlightRe.test(s)}function highlight(s,o,i,a){let u="",_="";"object"==typeof o?(u=s,i=o.ignoreIllegals,_=o.language,a=void 0):(deprecated("10.7.0","highlight(lang, code, ...args) has been deprecated."),deprecated("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),_=s,u=o);const w={code:u,language:_};fire("before:highlight",w);const x=w.result?w.result:_highlight(w.language,w.code,i,a);return x.code=w.code,fire("after:highlight",x),x}function _highlight(s,o,a,w){function keywordData(s,o){const i=L.case_insensitive?o[0].toLowerCase():o[0];return Object.prototype.hasOwnProperty.call(s.keywords,i)&&s.keywords[i]}function processBuffer(){null!=V.subLanguage?function processSubLanguage(){if(""===Y)return;let s=null;if("string"==typeof V.subLanguage){if(!i[V.subLanguage])return void U.addText(Y);s=_highlight(V.subLanguage,Y,!0,z[V.subLanguage]),z[V.subLanguage]=s.top}else s=highlightAuto(Y,V.subLanguage.length?V.subLanguage:null);V.relevance>0&&(Z+=s.relevance),U.addSublanguage(s.emitter,s.language)}():function processKeywords(){if(!V.keywords)return void U.addText(Y);let s=0;V.keywordPatternRe.lastIndex=0;let o=V.keywordPatternRe.exec(Y),i="";for(;o;){i+=Y.substring(s,o.index);const a=keywordData(V,o);if(a){const[s,u]=a;if(U.addText(i),i="",Z+=u,s.startsWith("_"))i+=o[0];else{const i=L.classNameAliases[s]||s;U.addKeyword(o[0],i)}}else i+=o[0];s=V.keywordPatternRe.lastIndex,o=V.keywordPatternRe.exec(Y)}i+=Y.substr(s),U.addText(i)}(),Y=""}function startNewMode(s){return s.className&&U.openNode(L.classNameAliases[s.className]||s.className),V=Object.create(s,{parent:{value:V}}),V}function endOfMode(s,o,i){let a=function startsWith(s,o){const i=s&&s.exec(o);return i&&0===i.index}(s.endRe,i);if(a){if(s["on:end"]){const i=new Response(s);s["on:end"](o,i),i.isMatchIgnored&&(a=!1)}if(a){for(;s.endsParent&&s.parent;)s=s.parent;return s}}if(s.endsWithParent)return endOfMode(s.parent,o,i)}function doIgnore(s){return 0===V.matcher.regexIndex?(Y+=s[0],1):(ae=!0,0)}function doBeginMatch(s){const o=s[0],i=s.rule,a=new Response(i),u=[i.__beforeBegin,i["on:begin"]];for(const i of u)if(i&&(i(s,a),a.isMatchIgnored))return doIgnore(o);return i&&i.endSameAsBegin&&(i.endRe=function escape(s){return new RegExp(s.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")}(o)),i.skip?Y+=o:(i.excludeBegin&&(Y+=o),processBuffer(),i.returnBegin||i.excludeBegin||(Y=o)),startNewMode(i),i.returnBegin?0:o.length}function doEndMatch(s){const i=s[0],a=o.substr(s.index),u=endOfMode(V,s,a);if(!u)return we;const _=V;_.skip?Y+=i:(_.returnEnd||_.excludeEnd||(Y+=i),processBuffer(),_.excludeEnd&&(Y=i));do{V.className&&U.closeNode(),V.skip||V.subLanguage||(Z+=V.relevance),V=V.parent}while(V!==u.parent);return u.starts&&(u.endSameAsBegin&&(u.starts.endRe=u.endRe),startNewMode(u.starts)),_.returnEnd?0:i.length}let C={};function processLexeme(i,u){const w=u&&u[0];if(Y+=i,null==w)return processBuffer(),0;if("begin"===C.type&&"end"===u.type&&C.index===u.index&&""===w){if(Y+=o.slice(u.index,u.index+1),!_){const o=new Error("0 width match regex");throw o.languageName=s,o.badRule=C.rule,o}return 1}if(C=u,"begin"===u.type)return doBeginMatch(u);if("illegal"===u.type&&!a){const s=new Error('Illegal lexeme "'+w+'" for mode "'+(V.className||"")+'"');throw s.mode=V,s}if("end"===u.type){const s=doEndMatch(u);if(s!==we)return s}if("illegal"===u.type&&""===w)return 1;if(ie>1e5&&ie>3*u.index){throw new Error("potential infinite loop, way more iterations than matches")}return Y+=w,w.length}const L=getLanguage(s);if(!L)throw error(x.replace("{}",s)),new Error('Unknown language: "'+s+'"');const B=compileLanguage(L,{plugins:u});let $="",V=w||B;const z={},U=new j.__emitter(j);!function processContinuations(){const s=[];for(let o=V;o!==L;o=o.parent)o.className&&s.unshift(o.className);s.forEach((s=>U.openNode(s)))}();let Y="",Z=0,ee=0,ie=0,ae=!1;try{for(V.matcher.considerAll();;){ie++,ae?ae=!1:V.matcher.considerAll(),V.matcher.lastIndex=ee;const s=V.matcher.exec(o);if(!s)break;const i=processLexeme(o.substring(ee,s.index),s);ee=s.index+i}return processLexeme(o.substr(ee)),U.closeAllNodes(),U.finalize(),$=U.toHTML(),{relevance:Math.floor(Z),value:$,language:s,illegal:!1,emitter:U,top:V}}catch(i){if(i.message&&i.message.includes("Illegal"))return{illegal:!0,illegalBy:{msg:i.message,context:o.slice(ee-100,ee+100),mode:i.mode},sofar:$,relevance:0,value:Se(o),emitter:U};if(_)return{illegal:!1,relevance:0,value:Se(o),emitter:U,language:s,top:V,errorRaised:i};throw i}}function highlightAuto(s,o){o=o||j.languages||Object.keys(i);const a=function justTextHighlightResult(s){const o={relevance:0,emitter:new j.__emitter(j),value:Se(s),illegal:!1,top:C};return o.emitter.addText(s),o}(s),u=o.filter(getLanguage).filter(autoDetection).map((o=>_highlight(o,s,!1)));u.unshift(a);const _=u.sort(((s,o)=>{if(s.relevance!==o.relevance)return o.relevance-s.relevance;if(s.language&&o.language){if(getLanguage(s.language).supersetOf===o.language)return 1;if(getLanguage(o.language).supersetOf===s.language)return-1}return 0})),[w,x]=_,L=w;return L.second_best=x,L}const L={"before:highlightElement":({el:s})=>{j.useBR&&(s.innerHTML=s.innerHTML.replace(/\n/g,"").replace(//g,"\n"))},"after:highlightElement":({result:s})=>{j.useBR&&(s.value=s.value.replace(/\n/g,"
"))}},B=/^(<[^>]+>|\t)+/gm,$={"after:highlightElement":({result:s})=>{j.tabReplace&&(s.value=s.value.replace(B,(s=>s.replace(/\t/g,j.tabReplace))))}};function highlightElement(s){let o=null;const i=function blockLanguage(s){let o=s.className+" ";o+=s.parentNode?s.parentNode.className:"";const i=j.languageDetectRe.exec(o);if(i){const o=getLanguage(i[1]);return o||(warn(x.replace("{}",i[1])),warn("Falling back to no-highlight mode for this block.",s)),o?i[1]:"no-highlight"}return o.split(/\s+/).find((s=>shouldNotHighlight(s)||getLanguage(s)))}(s);if(shouldNotHighlight(i))return;fire("before:highlightElement",{el:s,language:i}),o=s;const u=o.textContent,_=i?highlight(u,{language:i,ignoreIllegals:!0}):highlightAuto(u);fire("after:highlightElement",{el:s,result:_,text:u}),s.innerHTML=_.value,function updateClassName(s,o,i){const u=o?a[o]:i;s.classList.add("hljs"),u&&s.classList.add(u)}(s,i,_.language),s.result={language:_.language,re:_.relevance,relavance:_.relevance},_.second_best&&(s.second_best={language:_.second_best.language,re:_.second_best.relevance,relavance:_.second_best.relevance})}const initHighlighting=()=>{if(initHighlighting.called)return;initHighlighting.called=!0,deprecated("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead.");document.querySelectorAll("pre code").forEach(highlightElement)};let V=!1;function highlightAll(){if("loading"===document.readyState)return void(V=!0);document.querySelectorAll("pre code").forEach(highlightElement)}function getLanguage(s){return s=(s||"").toLowerCase(),i[s]||i[a[s]]}function registerAliases(s,{languageName:o}){"string"==typeof s&&(s=[s]),s.forEach((s=>{a[s.toLowerCase()]=o}))}function autoDetection(s){const o=getLanguage(s);return o&&!o.disableAutodetect}function fire(s,o){const i=s;u.forEach((function(s){s[i]&&s[i](o)}))}"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(function boot(){V&&highlightAll()}),!1),Object.assign(s,{highlight,highlightAuto,highlightAll,fixMarkup:function deprecateFixMarkup(s){return deprecated("10.2.0","fixMarkup will be removed entirely in v11.0"),deprecated("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"),function fixMarkup(s){return j.tabReplace||j.useBR?s.replace(w,(s=>"\n"===s?j.useBR?"
":s:j.tabReplace?s.replace(/\t/g,j.tabReplace):s)):s}(s)},highlightElement,highlightBlock:function deprecateHighlightBlock(s){return deprecated("10.7.0","highlightBlock will be removed entirely in v12.0"),deprecated("10.7.0","Please use highlightElement now."),highlightElement(s)},configure:function configure(s){s.useBR&&(deprecated("10.3.0","'useBR' will be removed entirely in v11.0"),deprecated("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")),j=_e(j,s)},initHighlighting,initHighlightingOnLoad:function initHighlightingOnLoad(){deprecated("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."),V=!0},registerLanguage:function registerLanguage(o,a){let u=null;try{u=a(s)}catch(s){if(error("Language definition for '{}' could not be registered.".replace("{}",o)),!_)throw s;error(s),u=C}u.name||(u.name=o),i[o]=u,u.rawDefinition=a.bind(null,s),u.aliases&®isterAliases(u.aliases,{languageName:o})},unregisterLanguage:function unregisterLanguage(s){delete i[s];for(const o of Object.keys(a))a[o]===s&&delete a[o]},listLanguages:function listLanguages(){return Object.keys(i)},getLanguage,registerAliases,requireLanguage:function requireLanguage(s){deprecated("10.4.0","requireLanguage will be removed entirely in v11."),deprecated("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844");const o=getLanguage(s);if(o)return o;throw new Error("The '{}' language is required, but not loaded.".replace("{}",s))},autoDetection,inherit:_e,addPlugin:function addPlugin(s){!function upgradePluginAPI(s){s["before:highlightBlock"]&&!s["before:highlightElement"]&&(s["before:highlightElement"]=o=>{s["before:highlightBlock"](Object.assign({block:o.el},o))}),s["after:highlightBlock"]&&!s["after:highlightElement"]&&(s["after:highlightElement"]=o=>{s["after:highlightBlock"](Object.assign({block:o.el},o))})}(s),u.push(s)},vuePlugin:BuildVuePlugin(s).VuePlugin}),s.debugMode=function(){_=!1},s.safeMode=function(){_=!0},s.versionString="10.7.3";for(const s in de)"object"==typeof de[s]&&o(de[s]);return Object.assign(s,de),s.addPlugin(L),s.addPlugin(ye),s.addPlugin($),s}({});s.exports=xe},35344(s){function concat(...s){return s.map((s=>function source(s){return s?"string"==typeof s?s:s.source:null}(s))).join("")}s.exports=function bash(s){const o={},i={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[o]}]};Object.assign(o,{className:"variable",variants:[{begin:concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},i]});const a={className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},u={begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},_={className:"string",begin:/"/,end:/"/,contains:[s.BACKSLASH_ESCAPE,o,a]};a.contains.push(_);const w={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,o]},x=s.SHEBANG({binary:`(${["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"].join("|")})`,relevance:10}),C={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[s.inherit(s.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z._-]+\b/,keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp"},contains:[x,s.SHEBANG(),C,w,s.HASH_COMMENT_MODE,u,_,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},o]}}},73402(s){function concat(...s){return s.map((s=>function source(s){return s?"string"==typeof s?s:s.source:null}(s))).join("")}s.exports=function http(s){const o="HTTP/(2|1\\.[01])",i={className:"attribute",begin:concat("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},a=[i,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+o+" \\d{3})",end:/$/,contains:[{className:"meta",begin:o},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:a}},{begin:"(?=^[A-Z]+ (.*?) "+o+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:o},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:a}},s.inherit(i,{relevance:0})]}}},95089(s){const o="[A-Za-z$_][0-9A-Za-z$_]*",i=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],a=["true","false","null","undefined","NaN","Infinity"],u=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer","BigInt64Array","BigUint64Array","BigInt"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);function lookahead(s){return concat("(?=",s,")")}function concat(...s){return s.map((s=>function source(s){return s?"string"==typeof s?s:s.source:null}(s))).join("")}s.exports=function javascript(s){const _=o,w="<>",x="",C={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(s,o)=>{const i=s[0].length+s.index,a=s.input[i];"<"!==a?">"===a&&(((s,{after:o})=>{const i="",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:s.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:j,contains:ce}]}]},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{variants:[{begin:w,end:x},{begin:C.begin,"on:begin":C.isTrulyOpeningTag,end:C.end}],subLanguage:"xml",contains:[{begin:C.begin,end:C.end,skip:!0,contains:["self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:j,contains:["self",s.inherit(s.TITLE_MODE,{begin:_}),le],illegal:/%/},{beginKeywords:"while if switch catch for"},{className:"function",begin:s.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,contains:[le,s.inherit(s.TITLE_MODE,{begin:_})]},{variants:[{begin:"\\."+_},{begin:"\\$"+_}],relevance:0},{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{beginKeywords:"extends"},s.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/,end:/[{;]/,excludeEnd:!0,contains:[s.inherit(s.TITLE_MODE,{begin:_}),"self",le]},{begin:"(get|set)\\s+(?="+_+"\\()",end:/\{/,keywords:"get set",contains:[s.inherit(s.TITLE_MODE,{begin:_}),{begin:/\(\)/},le]},{begin:/\$[(.]/}]}}},65772(s){s.exports=function json(s){const o={literal:"true false null"},i=[s.C_LINE_COMMENT_MODE,s.C_BLOCK_COMMENT_MODE],a=[s.QUOTE_STRING_MODE,s.C_NUMBER_MODE],u={end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:o},_={begin:/\{/,end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/,contains:[s.BACKSLASH_ESCAPE],illegal:"\\n"},s.inherit(u,{begin:/:/})].concat(i),illegal:"\\S"},w={begin:"\\[",end:"\\]",contains:[s.inherit(u)],illegal:"\\S"};return a.push(_,w),i.forEach((function(s){a.push(s)})),{name:"JSON",contains:a,keywords:o,illegal:"\\S"}}},26571(s){s.exports=function powershell(s){const o={$pattern:/-?[A-z\.\-]+\b/,keyword:"if else foreach return do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch hidden static parameter",built_in:"ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write"},i={begin:"`[\\s\\S]",relevance:0},a={className:"variable",variants:[{begin:/\$\B/},{className:"keyword",begin:/\$this/},{begin:/\$[\w\d][\w\d_:]*/}]},u={className:"string",variants:[{begin:/"/,end:/"/},{begin:/@"/,end:/^"@/}],contains:[i,a,{className:"variable",begin:/\$[A-z]/,end:/[^A-z]/}]},_={className:"string",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}]},w=s.inherit(s.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/,end:/#>/}],contains:[{className:"doctag",variants:[{begin:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/},{begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/}]}]}),x={className:"built_in",variants:[{begin:"(".concat("Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|Unprotect|Use|ForEach|Sort|Tee|Where",")+(-)[\\w\\d]+")}]},C={className:"class",beginKeywords:"class enum",end:/\s*[{]/,excludeEnd:!0,relevance:0,contains:[s.TITLE_MODE]},j={className:"function",begin:/function\s+/,end:/\s*\{|$/,excludeEnd:!0,returnBegin:!0,relevance:0,contains:[{begin:"function",relevance:0,className:"keyword"},{className:"title",begin:/\w[\w\d]*((-)[\w\d]+)*/,relevance:0},{begin:/\(/,end:/\)/,className:"params",relevance:0,contains:[a]}]},L={begin:/using\s/,end:/$/,returnBegin:!0,contains:[u,_,{className:"keyword",begin:/(using|assembly|command|module|namespace|type)/}]},B={variants:[{className:"operator",begin:"(".concat("-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|-split|-wildcard|-xor",")\\b")},{className:"literal",begin:/(-)[\w\d]+/,relevance:0}]},$={className:"function",begin:/\[.*\]\s*[\w]+[ ]??\(/,end:/$/,returnBegin:!0,relevance:0,contains:[{className:"keyword",begin:"(".concat(o.keyword.toString().replace(/\s/g,"|"),")\\b"),endsParent:!0,relevance:0},s.inherit(s.TITLE_MODE,{endsParent:!0})]},V=[$,w,i,s.NUMBER_MODE,u,_,x,a,{className:"literal",begin:/\$(null|true|false)\b/},{className:"selector-tag",begin:/@\B/,relevance:0}],z={begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[].concat("self",V,{begin:"("+["string","char","byte","int","long","bool","decimal","single","double","DateTime","xml","array","hashtable","void"].join("|")+")",className:"built_in",relevance:0},{className:"type",begin:/[\.\w\d]+/,relevance:0})};return $.contains.unshift(z),{name:"PowerShell",aliases:["ps","ps1"],case_insensitive:!0,keywords:o,contains:V.concat(C,j,L,B,z)}}},17285(s){function source(s){return s?"string"==typeof s?s:s.source:null}function lookahead(s){return concat("(?=",s,")")}function concat(...s){return s.map((s=>source(s))).join("")}function either(...s){return"("+s.map((s=>source(s))).join("|")+")"}s.exports=function xml(s){const o=concat(/[A-Z_]/,function optional(s){return concat("(",s,")?")}(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),i={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},a={begin:/\s/,contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},u=s.inherit(a,{begin:/\(/,end:/\)/}),_=s.inherit(s.APOS_STRING_MODE,{className:"meta-string"}),w=s.inherit(s.QUOTE_STRING_MODE,{className:"meta-string"}),x={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin://,relevance:10,contains:[a,w,_,u,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[a,u,w,_]}]}]},s.COMMENT(//,{relevance:10}),{begin://,relevance:10},i,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[x],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[x],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:o,relevance:0,starts:x}]},{className:"tag",begin:concat(/<\//,lookahead(concat(o,/>/))),contains:[{className:"name",begin:o,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}},17533(s){s.exports=function yaml(s){var o="true false yes no null",i="[\\w#;/?:@&=+$,.~*'()[\\]]+",a={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[s.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},u=s.inherit(a,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),_={className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},w={end:",",endsWithParent:!0,excludeEnd:!0,keywords:o,relevance:0},x={begin:/\{/,end:/\}/,contains:[w],illegal:"\\n",relevance:0},C={begin:"\\[",end:"\\]",contains:[w],illegal:"\\n",relevance:0},j=[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+i},{className:"type",begin:"!<"+i+">"},{className:"type",begin:"!"+i},{className:"type",begin:"!!"+i},{className:"meta",begin:"&"+s.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+s.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},s.HASH_COMMENT_MODE,{beginKeywords:o,keywords:{literal:o}},_,{className:"number",begin:s.C_NUMBER_RE+"\\b",relevance:0},x,C,a],L=[...j];return L.pop(),L.push(u),w.contains=L,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:j}}},251(s,o){o.read=function(s,o,i,a,u){var _,w,x=8*u-a-1,C=(1<>1,L=-7,B=i?u-1:0,$=i?-1:1,V=s[o+B];for(B+=$,_=V&(1<<-L)-1,V>>=-L,L+=x;L>0;_=256*_+s[o+B],B+=$,L-=8);for(w=_&(1<<-L)-1,_>>=-L,L+=a;L>0;w=256*w+s[o+B],B+=$,L-=8);if(0===_)_=1-j;else{if(_===C)return w?NaN:1/0*(V?-1:1);w+=Math.pow(2,a),_-=j}return(V?-1:1)*w*Math.pow(2,_-a)},o.write=function(s,o,i,a,u,_){var w,x,C,j=8*_-u-1,L=(1<>1,$=23===u?Math.pow(2,-24)-Math.pow(2,-77):0,V=a?0:_-1,z=a?1:-1,U=o<0||0===o&&1/o<0?1:0;for(o=Math.abs(o),isNaN(o)||o===1/0?(x=isNaN(o)?1:0,w=L):(w=Math.floor(Math.log(o)/Math.LN2),o*(C=Math.pow(2,-w))<1&&(w--,C*=2),(o+=w+B>=1?$/C:$*Math.pow(2,1-B))*C>=2&&(w++,C/=2),w+B>=L?(x=0,w=L):w+B>=1?(x=(o*C-1)*Math.pow(2,u),w+=B):(x=o*Math.pow(2,B-1)*Math.pow(2,u),w=0));u>=8;s[i+V]=255&x,V+=z,x/=256,u-=8);for(w=w<0;s[i+V]=255&w,V+=z,w/=256,j-=8);s[i+V-z]|=128*U}},49568(s,o,i){"use strict";i.r(o),i.d(o,{Collection:()=>w,Iterable:()=>Zt,List:()=>wt,Map:()=>ct,OrderedMap:()=>jt,OrderedSet:()=>Ut,PairSorting:()=>Ht,Range:()=>Rt,Record:()=>Kt,Repeat:()=>Xt,Seq:()=>le,Set:()=>Ft,Stack:()=>It,fromJS:()=>fromJS,get:()=>get,getIn:()=>getIn$1,has:()=>has,hasIn:()=>hasIn$1,hash:()=>hash,is:()=>is,isAssociative:()=>isAssociative,isCollection:()=>isCollection,isImmutable:()=>isImmutable,isIndexed:()=>isIndexed,isKeyed:()=>isKeyed,isList:()=>isList,isMap:()=>isMap,isOrdered:()=>isOrdered,isOrderedMap:()=>isOrderedMap,isOrderedSet:()=>isOrderedSet,isPlainObject:()=>isPlainObject,isRecord:()=>isRecord,isSeq:()=>isSeq,isSet:()=>isSet,isStack:()=>isStack,isValueObject:()=>isValueObject,merge:()=>merge,mergeDeep:()=>mergeDeep$1,mergeDeepWith:()=>mergeDeepWith$1,mergeWith:()=>mergeWith,remove:()=>remove,removeIn:()=>removeIn,set:()=>set,setIn:()=>setIn$1,update:()=>update$1,updateIn:()=>updateIn,version:()=>Qt});var a="@@__IMMUTABLE_INDEXED__@@";function isIndexed(s){return Boolean(s&&s[a])}var u="@@__IMMUTABLE_KEYED__@@";function isKeyed(s){return Boolean(s&&s[u])}function isAssociative(s){return isKeyed(s)||isIndexed(s)}var _="@@__IMMUTABLE_ITERABLE__@@";function isCollection(s){return Boolean(s&&s[_])}var w=function Collection(s){return isCollection(s)?s:le(s)},x=function(s){function KeyedCollection(s){return isKeyed(s)?s:pe(s)}return s&&(KeyedCollection.__proto__=s),KeyedCollection.prototype=Object.create(s&&s.prototype),KeyedCollection.prototype.constructor=KeyedCollection,KeyedCollection}(w),C=function(s){function IndexedCollection(s){return isIndexed(s)?s:de(s)}return s&&(IndexedCollection.__proto__=s),IndexedCollection.prototype=Object.create(s&&s.prototype),IndexedCollection.prototype.constructor=IndexedCollection,IndexedCollection}(w),j=function(s){function SetCollection(s){return isCollection(s)&&!isAssociative(s)?s:fe(s)}return s&&(SetCollection.__proto__=s),SetCollection.prototype=Object.create(s&&s.prototype),SetCollection.prototype.constructor=SetCollection,SetCollection}(w);w.Keyed=x,w.Indexed=C,w.Set=j;var L="function"==typeof Symbol&&Symbol.iterator,B="@@iterator",$=L||B,V=function Iterator(s){this.next=s};function iteratorValue(s,o,i,a){var u=0===s?o:1===s?i:[o,i];return a?a.value=u:a={value:u,done:!1},a}function iteratorDone(){return{value:void 0,done:!0}}function hasIterator(s){return!!Array.isArray(s)||!!getIteratorFn(s)}function isIterator(s){return!(!s||"function"!=typeof s.next)}function getIterator(s){var o=getIteratorFn(s);return o&&o.call(s)}function getIteratorFn(s){var o=s&&(L&&s[L]||s[B]);if("function"==typeof o)return o}V.prototype.toString=function toString(){return"[Iterator]"},V.KEYS=0,V.VALUES=1,V.ENTRIES=2,V.prototype.inspect=V.prototype.toSource=function(){return this.toString()},V.prototype[$]=function(){return this};var z="delete",U=32,Y=31,Z={};function SetRef(s){s&&(s.value=!0)}function OwnerID(){}function ensureSize(s){return void 0===s.size&&(s.size=s.__iterate(returnTrue)),s.size}function wrapIndex(s,o){if("number"!=typeof o){var i=o>>>0;if(""+i!==o||4294967295===i)return NaN;o=i}return o<0?ensureSize(s)+o:o}function returnTrue(){return!0}function wholeSlice(s,o,i){return(0===s&&!isNeg(s)||void 0!==i&&s<=-i)&&(void 0===o||void 0!==i&&o>=i)}function resolveBegin(s,o){return resolveIndex(s,o,0)}function resolveEnd(s,o){return resolveIndex(s,o,o)}function resolveIndex(s,o,i){return void 0===s?i:isNeg(s)?o===1/0?o:0|Math.max(0,o+s):void 0===o||o===s?s:0|Math.min(o,s)}function isNeg(s){return s<0||0===s&&1/s==-1/0}var ee="@@__IMMUTABLE_RECORD__@@";function isRecord(s){return Boolean(s&&s[ee])}function isImmutable(s){return isCollection(s)||isRecord(s)}var ie="@@__IMMUTABLE_ORDERED__@@";function isOrdered(s){return Boolean(s&&s[ie])}var ae="@@__IMMUTABLE_SEQ__@@";function isSeq(s){return Boolean(s&&s[ae])}var ce=Object.prototype.hasOwnProperty;function isArrayLike(s){return!(!Array.isArray(s)&&"string"!=typeof s)||s&&"object"==typeof s&&Number.isInteger(s.length)&&s.length>=0&&(0===s.length?1===Object.keys(s).length:s.hasOwnProperty(s.length-1))}var le=function(s){function Seq(s){return null==s?emptySequence():isImmutable(s)?s.toSeq():function seqFromValue(s){var o=maybeIndexedSeqFromValue(s);if(o)return function isEntriesIterable(s){var o=getIteratorFn(s);return o&&o===s.entries}(s)?o.fromEntrySeq():function isKeysIterable(s){var o=getIteratorFn(s);return o&&o===s.keys}(s)?o.toSetSeq():o;if("object"==typeof s)return new be(s);throw new TypeError("Expected Array or collection object of values, or keyed object: "+s)}(s)}return s&&(Seq.__proto__=s),Seq.prototype=Object.create(s&&s.prototype),Seq.prototype.constructor=Seq,Seq.prototype.toSeq=function toSeq(){return this},Seq.prototype.toString=function toString(){return this.__toString("Seq {","}")},Seq.prototype.cacheResult=function cacheResult(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},Seq.prototype.__iterate=function __iterate(s,o){var i=this._cache;if(i){for(var a=i.length,u=0;u!==a;){var _=i[o?a-++u:u++];if(!1===s(_[1],_[0],this))break}return u}return this.__iterateUncached(s,o)},Seq.prototype.__iterator=function __iterator(s,o){var i=this._cache;if(i){var a=i.length,u=0;return new V((function(){if(u===a)return{value:void 0,done:!0};var _=i[o?a-++u:u++];return iteratorValue(s,_[0],_[1])}))}return this.__iteratorUncached(s,o)},Seq}(w),pe=function(s){function KeyedSeq(s){return null==s?emptySequence().toKeyedSeq():isCollection(s)?isKeyed(s)?s.toSeq():s.fromEntrySeq():isRecord(s)?s.toSeq():keyedSeqFromValue(s)}return s&&(KeyedSeq.__proto__=s),KeyedSeq.prototype=Object.create(s&&s.prototype),KeyedSeq.prototype.constructor=KeyedSeq,KeyedSeq.prototype.toKeyedSeq=function toKeyedSeq(){return this},KeyedSeq}(le),de=function(s){function IndexedSeq(s){return null==s?emptySequence():isCollection(s)?isKeyed(s)?s.entrySeq():s.toIndexedSeq():isRecord(s)?s.toSeq().entrySeq():indexedSeqFromValue(s)}return s&&(IndexedSeq.__proto__=s),IndexedSeq.prototype=Object.create(s&&s.prototype),IndexedSeq.prototype.constructor=IndexedSeq,IndexedSeq.of=function of(){return IndexedSeq(arguments)},IndexedSeq.prototype.toIndexedSeq=function toIndexedSeq(){return this},IndexedSeq.prototype.toString=function toString(){return this.__toString("Seq [","]")},IndexedSeq}(le),fe=function(s){function SetSeq(s){return(isCollection(s)&&!isAssociative(s)?s:de(s)).toSetSeq()}return s&&(SetSeq.__proto__=s),SetSeq.prototype=Object.create(s&&s.prototype),SetSeq.prototype.constructor=SetSeq,SetSeq.of=function of(){return SetSeq(arguments)},SetSeq.prototype.toSetSeq=function toSetSeq(){return this},SetSeq}(le);le.isSeq=isSeq,le.Keyed=pe,le.Set=fe,le.Indexed=de,le.prototype[ae]=!0;var ye=function(s){function ArraySeq(s){this._array=s,this.size=s.length}return s&&(ArraySeq.__proto__=s),ArraySeq.prototype=Object.create(s&&s.prototype),ArraySeq.prototype.constructor=ArraySeq,ArraySeq.prototype.get=function get(s,o){return this.has(s)?this._array[wrapIndex(this,s)]:o},ArraySeq.prototype.__iterate=function __iterate(s,o){for(var i=this._array,a=i.length,u=0;u!==a;){var _=o?a-++u:u++;if(!1===s(i[_],_,this))break}return u},ArraySeq.prototype.__iterator=function __iterator(s,o){var i=this._array,a=i.length,u=0;return new V((function(){if(u===a)return{value:void 0,done:!0};var _=o?a-++u:u++;return iteratorValue(s,_,i[_])}))},ArraySeq}(de),be=function(s){function ObjectSeq(s){var o=Object.keys(s).concat(Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(s):[]);this._object=s,this._keys=o,this.size=o.length}return s&&(ObjectSeq.__proto__=s),ObjectSeq.prototype=Object.create(s&&s.prototype),ObjectSeq.prototype.constructor=ObjectSeq,ObjectSeq.prototype.get=function get(s,o){return void 0===o||this.has(s)?this._object[s]:o},ObjectSeq.prototype.has=function has(s){return ce.call(this._object,s)},ObjectSeq.prototype.__iterate=function __iterate(s,o){for(var i=this._object,a=this._keys,u=a.length,_=0;_!==u;){var w=a[o?u-++_:_++];if(!1===s(i[w],w,this))break}return _},ObjectSeq.prototype.__iterator=function __iterator(s,o){var i=this._object,a=this._keys,u=a.length,_=0;return new V((function(){if(_===u)return{value:void 0,done:!0};var w=a[o?u-++_:_++];return iteratorValue(s,w,i[w])}))},ObjectSeq}(pe);be.prototype[ie]=!0;var Se,_e=function(s){function CollectionSeq(s){this._collection=s,this.size=s.length||s.size}return s&&(CollectionSeq.__proto__=s),CollectionSeq.prototype=Object.create(s&&s.prototype),CollectionSeq.prototype.constructor=CollectionSeq,CollectionSeq.prototype.__iterateUncached=function __iterateUncached(s,o){if(o)return this.cacheResult().__iterate(s,o);var i=getIterator(this._collection),a=0;if(isIterator(i))for(var u;!(u=i.next()).done&&!1!==s(u.value,a++,this););return a},CollectionSeq.prototype.__iteratorUncached=function __iteratorUncached(s,o){if(o)return this.cacheResult().__iterator(s,o);var i=getIterator(this._collection);if(!isIterator(i))return new V(iteratorDone);var a=0;return new V((function(){var o=i.next();return o.done?o:iteratorValue(s,a++,o.value)}))},CollectionSeq}(de);function emptySequence(){return Se||(Se=new ye([]))}function keyedSeqFromValue(s){var o=maybeIndexedSeqFromValue(s);if(o)return o.fromEntrySeq();if("object"==typeof s)return new be(s);throw new TypeError("Expected Array or collection object of [k, v] entries, or keyed object: "+s)}function indexedSeqFromValue(s){var o=maybeIndexedSeqFromValue(s);if(o)return o;throw new TypeError("Expected Array or collection object of values: "+s)}function maybeIndexedSeqFromValue(s){return isArrayLike(s)?new ye(s):hasIterator(s)?new _e(s):void 0}function asImmutable(){return this.__ensureOwner()}function asMutable(){return this.__ownerID?this:this.__ensureOwner(new OwnerID)}var we="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function imul(s,o){var i=65535&(s|=0),a=65535&(o|=0);return i*a+((s>>>16)*a+i*(o>>>16)<<16>>>0)|0};function smi(s){return s>>>1&1073741824|3221225471&s}var xe=Object.prototype.valueOf;function hash(s){if(null==s)return hashNullish(s);if("function"==typeof s.hashCode)return smi(s.hashCode(s));var o=function valueOf(s){return s.valueOf!==xe&&"function"==typeof s.valueOf?s.valueOf(s):s}(s);if(null==o)return hashNullish(o);switch(typeof o){case"boolean":return o?1108378657:1108378656;case"number":return function hashNumber(s){if(s!=s||s===1/0)return 0;var o=0|s;o!==s&&(o^=4294967295*s);for(;s>4294967295;)o^=s/=4294967295;return smi(o)}(o);case"string":return o.length>Ye?function cachedHashString(s){var o=et[s];void 0===o&&(o=hashString(s),Qe===Xe&&(Qe=0,et={}),Qe++,et[s]=o);return o}(o):hashString(o);case"object":case"function":return function hashJSObj(s){var o;if(qe&&void 0!==(o=$e.get(s)))return o;if(void 0!==(o=s[He]))return o;if(!Re){if(void 0!==(o=s.propertyIsEnumerable&&s.propertyIsEnumerable[He]))return o;if(void 0!==(o=function getIENodeHash(s){if(s&&s.nodeType>0)switch(s.nodeType){case 1:return s.uniqueID;case 9:return s.documentElement&&s.documentElement.uniqueID}}(s)))return o}if(o=nextHash(),qe)$e.set(s,o);else{if(void 0!==Te&&!1===Te(s))throw new Error("Non-extensible objects are not allowed as keys.");if(Re)Object.defineProperty(s,He,{enumerable:!1,configurable:!1,writable:!1,value:o});else if(void 0!==s.propertyIsEnumerable&&s.propertyIsEnumerable===s.constructor.prototype.propertyIsEnumerable)s.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},s.propertyIsEnumerable[He]=o;else{if(void 0===s.nodeType)throw new Error("Unable to set a non-enumerable property on object.");s[He]=o}}return o}(o);case"symbol":return function hashSymbol(s){var o=ze[s];if(void 0!==o)return o;return o=nextHash(),ze[s]=o,o}(o);default:if("function"==typeof o.toString)return hashString(o.toString());throw new Error("Value type "+typeof o+" cannot be hashed.")}}function hashNullish(s){return null===s?1108378658:1108378659}function hashString(s){for(var o=0,i=0;i=0&&(C.get=function(o,i){return(o=wrapIndex(this,o))>=0&&o<_?s.get(o+w,i):i}),C.__iterateUncached=function(o,i){var u=this;if(0===_)return 0;if(i)return this.cacheResult().__iterate(o,i);var x=0,C=!0,j=0;return s.__iterate((function(s,i){if(!C||!(C=x++_)return{value:void 0,done:!0};var s=u.next();return a||1===o||s.done?s:iteratorValue(o,C-1,0===o?void 0:s.value[1],s)}))},C}function skipWhileFactory(s,o,i,a){var u=makeSequence(s);return u.__iterateUncached=function(u,_){var w=this;if(_)return this.cacheResult().__iterate(u,_);var x=!0,C=0;return s.__iterate((function(s,_,j){if(!x||!(x=o.call(i,s,_,j)))return C++,u(s,a?_:C-1,w)})),C},u.__iteratorUncached=function(u,_){var w=this;if(_)return this.cacheResult().__iterator(u,_);var x=s.__iterator(2,_),C=!0,j=0;return new V((function(){var s,_,L;do{if((s=x.next()).done)return a||1===u?s:iteratorValue(u,j++,0===u?void 0:s.value[1],s);var B=s.value;_=B[0],L=B[1],C&&(C=o.call(i,L,_,w))}while(C);return 2===u?s:iteratorValue(u,_,L,s)}))},u}rt.prototype.cacheResult=tt.prototype.cacheResult=nt.prototype.cacheResult=st.prototype.cacheResult=cacheResultThrough;var ot=function(s){function ConcatSeq(s){this._wrappedIterables=s.flatMap((function(s){return s._wrappedIterables?s._wrappedIterables:[s]})),this.size=this._wrappedIterables.reduce((function(s,o){if(void 0!==s){var i=o.size;if(void 0!==i)return s+i}}),0),this[u]=this._wrappedIterables[0][u],this[a]=this._wrappedIterables[0][a],this[ie]=this._wrappedIterables[0][ie]}return s&&(ConcatSeq.__proto__=s),ConcatSeq.prototype=Object.create(s&&s.prototype),ConcatSeq.prototype.constructor=ConcatSeq,ConcatSeq.prototype.__iterateUncached=function __iterateUncached(s,o){if(0!==this._wrappedIterables.length){if(o)return this.cacheResult().__iterate(s,o);for(var i=0,a=isKeyed(this),u=a?2:1,_=this._wrappedIterables[i].__iterator(u,o),w=!0,x=0;w;){for(var C=_.next();C.done;){if(++i===this._wrappedIterables.length)return x;C=(_=this._wrappedIterables[i].__iterator(u,o)).next()}w=!1!==(a?s(C.value[1],C.value[0],this):s(C.value,x,this)),x++}return x}},ConcatSeq.prototype.__iteratorUncached=function __iteratorUncached(s,o){var i=this;if(0===this._wrappedIterables.length)return new V(iteratorDone);if(o)return this.cacheResult().__iterator(s,o);var a=0,u=this._wrappedIterables[a].__iterator(s,o);return new V((function(){for(var _=u.next();_.done;){if(++a===i._wrappedIterables.length)return _;_=(u=i._wrappedIterables[a].__iterator(s,o)).next()}return _}))},ConcatSeq}(le);function flattenFactory(s,o,i){var a=makeSequence(s);return a.__iterateUncached=function(u,_){if(_)return this.cacheResult().__iterate(u,_);var w=0,x=!1;return function flatDeep(s,C){s.__iterate((function(s,_){return(!o||C0}function zipWithFactory(s,o,i,a){var u=makeSequence(s),_=new ye(i).map((function(s){return s.size}));return u.size=a?_.max():_.min(),u.__iterate=function(s,o){for(var i,a=this.__iterator(1,o),u=0;!(i=a.next()).done&&!1!==s(i.value,u++,this););return u},u.__iteratorUncached=function(s,u){var _=i.map((function(s){return s=w(s),getIterator(u?s.reverse():s)})),x=0,C=!1;return new V((function(){var i;return C||(i=_.map((function(s){return s.next()})),C=a?i.every((function(s){return s.done})):i.some((function(s){return s.done}))),C?{value:void 0,done:!0}:iteratorValue(s,x++,o.apply(null,i.map((function(s){return s.value}))))}))},u}function reify(s,o){return s===o?s:isSeq(s)?o:s.constructor(o)}function validateEntry(s){if(s!==Object(s))throw new TypeError("Expected [K, V] tuple: "+s)}function collectionClass(s){return isKeyed(s)?x:isIndexed(s)?C:j}function makeSequence(s){return Object.create((isKeyed(s)?pe:isIndexed(s)?de:fe).prototype)}function cacheResultThrough(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):le.prototype.cacheResult.call(this)}function defaultComparator(s,o){return void 0===s&&void 0===o?0:void 0===s?1:void 0===o?-1:s>o?1:s0;)o[i]=arguments[i+1];if("function"!=typeof s)throw new TypeError("Invalid merger function: "+s);return mergeIntoKeyedWith(this,o,s)}function mergeIntoKeyedWith(s,o,i){for(var a=[],u=0;u0;)o[i]=arguments[i+1];return mergeWithSources(s,o)}function mergeWith(s,o){for(var i=[],a=arguments.length-2;a-- >0;)i[a]=arguments[a+2];return mergeWithSources(o,i,s)}function mergeDeep$1(s){for(var o=[],i=arguments.length-1;i-- >0;)o[i]=arguments[i+1];return mergeDeepWithSources(s,o)}function mergeDeepWith$1(s,o){for(var i=[],a=arguments.length-2;a-- >0;)i[a]=arguments[a+2];return mergeDeepWithSources(o,i,s)}function mergeDeepWithSources(s,o,i){return mergeWithSources(s,o,function deepMergerWith(s){function deepMerger(o,i,a){return isDataStructure(o)&&isDataStructure(i)&&function areMergeable(s,o){var i=le(s),a=le(o);return isIndexed(i)===isIndexed(a)&&isKeyed(i)===isKeyed(a)}(o,i)?mergeWithSources(o,[i],deepMerger):s?s(o,i,a):i}return deepMerger}(i))}function mergeWithSources(s,o,i){if(!isDataStructure(s))throw new TypeError("Cannot merge into non-data-structure value: "+s);if(isImmutable(s))return"function"==typeof i&&s.mergeWith?s.mergeWith.apply(s,[i].concat(o)):s.merge?s.merge.apply(s,o):s.concat.apply(s,o);for(var a=Array.isArray(s),u=s,_=a?C:x,w=a?function(o){u===s&&(u=shallowCopy(u)),u.push(o)}:function(o,a){if(!isProtoKey(a)){var _=ce.call(u,a),w=_&&i?i(u[a],o,a):o;_&&w===u[a]||(u===s&&(u=shallowCopy(u)),u[a]=w)}},j=0;j0;)o[i]=arguments[i+1];return mergeDeepWithSources(this,o,s)}function mergeDeepIn(s){for(var o=[],i=arguments.length-1;i-- >0;)o[i]=arguments[i+1];return updateIn(this,s,emptyMap(),(function(s){return mergeDeepWithSources(s,o)}))}function mergeIn(s){for(var o=[],i=arguments.length-1;i-- >0;)o[i]=arguments[i+1];return updateIn(this,s,emptyMap(),(function(s){return mergeWithSources(s,o)}))}function setIn$1(s,o,i){return updateIn(s,o,Z,(function(){return i}))}function setIn(s,o){return setIn$1(this,s,o)}function update(s,o,i){return 1===arguments.length?s(this):update$1(this,s,o,i)}function updateIn$1(s,o,i){return updateIn(this,s,o,i)}function wasAltered(){return this.__altered}function withMutations(s){var o=this.asMutable();return s(o),o.wasAltered()?o.__ensureOwner(this.__ownerID):this}var at="@@__IMMUTABLE_MAP__@@";function isMap(s){return Boolean(s&&s[at])}function invariant(s,o){if(!s)throw new Error(o)}function assertNotInfinite(s){invariant(s!==1/0,"Cannot perform this action with an infinite size.")}var ct=function(s){function Map(o){return null==o?emptyMap():isMap(o)&&!isOrdered(o)?o:emptyMap().withMutations((function(i){var a=s(o);assertNotInfinite(a.size),a.forEach((function(s,o){return i.set(o,s)}))}))}return s&&(Map.__proto__=s),Map.prototype=Object.create(s&&s.prototype),Map.prototype.constructor=Map,Map.prototype.toString=function toString(){return this.__toString("Map {","}")},Map.prototype.get=function get(s,o){return this._root?this._root.get(0,void 0,s,o):o},Map.prototype.set=function set(s,o){return updateMap(this,s,o)},Map.prototype.remove=function remove(s){return updateMap(this,s,Z)},Map.prototype.deleteAll=function deleteAll(s){var o=w(s);return 0===o.size?this:this.withMutations((function(s){o.forEach((function(o){return s.remove(o)}))}))},Map.prototype.clear=function clear(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):emptyMap()},Map.prototype.sort=function sort(s){return jt(sortFactory(this,s))},Map.prototype.sortBy=function sortBy(s,o){return jt(sortFactory(this,o,s))},Map.prototype.map=function map(s,o){var i=this;return this.withMutations((function(a){a.forEach((function(u,_){a.set(_,s.call(o,u,_,i))}))}))},Map.prototype.__iterator=function __iterator(s,o){return new yt(this,s,o)},Map.prototype.__iterate=function __iterate(s,o){var i=this,a=0;return this._root&&this._root.iterate((function(o){return a++,s(o[1],o[0],i)}),o),a},Map.prototype.__ensureOwner=function __ensureOwner(s){return s===this.__ownerID?this:s?makeMap(this.size,this._root,s,this.__hash):0===this.size?emptyMap():(this.__ownerID=s,this.__altered=!1,this)},Map}(x);ct.isMap=isMap;var lt=ct.prototype;lt[at]=!0,lt[z]=lt.remove,lt.removeAll=lt.deleteAll,lt.setIn=setIn,lt.removeIn=lt.deleteIn=deleteIn,lt.update=update,lt.updateIn=updateIn$1,lt.merge=lt.concat=merge$1,lt.mergeWith=mergeWith$1,lt.mergeDeep=mergeDeep,lt.mergeDeepWith=mergeDeepWith,lt.mergeIn=mergeIn,lt.mergeDeepIn=mergeDeepIn,lt.withMutations=withMutations,lt.wasAltered=wasAltered,lt.asImmutable=asImmutable,lt["@@transducer/init"]=lt.asMutable=asMutable,lt["@@transducer/step"]=function(s,o){return s.set(o[0],o[1])},lt["@@transducer/result"]=function(s){return s.asImmutable()};var ut=function ArrayMapNode(s,o){this.ownerID=s,this.entries=o};ut.prototype.get=function get(s,o,i,a){for(var u=this.entries,_=0,w=u.length;_=vt)return function createNodes(s,o,i,a){s||(s=new OwnerID);for(var u=new mt(s,hash(i),[i,a]),_=0;_>>s)&Y),_=this.bitmap;return _&u?this.nodes[popCount(_&u-1)].get(s+5,o,i,a):a},pt.prototype.update=function update(s,o,i,a,u,_,w){void 0===i&&(i=hash(a));var x=(0===o?i:i>>>o)&Y,C=1<=bt)return function expandNodes(s,o,i,a,u){for(var _=0,w=new Array(U),x=0;0!==i;x++,i>>>=1)w[x]=1&i?o[_++]:void 0;return w[a]=u,new ht(s,_+1,w)}(s,$,j,x,z);if(L&&!z&&2===$.length&&isLeafNode($[1^B]))return $[1^B];if(L&&z&&1===$.length&&isLeafNode(z))return z;var ee=s&&s===this.ownerID,ie=L?z?j:j^C:j|C,ae=L?z?setAt($,B,z,ee):function spliceOut(s,o,i){var a=s.length-1;if(i&&o===a)return s.pop(),s;for(var u=new Array(a),_=0,w=0;w>>s)&Y,_=this.nodes[u];return _?_.get(s+5,o,i,a):a},ht.prototype.update=function update(s,o,i,a,u,_,w){void 0===i&&(i=hash(a));var x=(0===o?i:i>>>o)&Y,C=u===Z,j=this.nodes,L=j[x];if(C&&!L)return this;var B=updateNode(L,s,o+5,i,a,u,_,w);if(B===L)return this;var $=this.count;if(L){if(!B&&--$=_t&&(a=this._buildIndex()),void 0!==a){var u=a[hashCollisionKey(s)];if(void 0!==u)for(var _=0;_>>i)&Y,x=(0===i?a:a>>>i)&Y,C=w===x?[mergeIntoNode(s,o,i+5,a,u)]:(_=new mt(o,a,u),w>1&1431655765))+(s>>2&858993459))+(s>>4)&252645135,s+=s>>8,127&(s+=s>>16)}function setAt(s,o,i,a){var u=a?s:arrCopy(s);return u[o]=i,u}var vt=8,bt=16,St=8,_t=16;function coerceKeyPath(s){if(isArrayLike(s)&&"string"!=typeof s)return s;if(isOrdered(s))return s.toArray();throw new TypeError("Invalid keyPath: expected Ordered Collection or Array: "+s)}function quoteString(s){try{return"string"==typeof s?JSON.stringify(s):String(s)}catch(o){return JSON.stringify(s)}}function has(s,o){return isImmutable(s)?s.has(o):isDataStructure(s)&&ce.call(s,o)}function get(s,o,i){return isImmutable(s)?s.get(o,i):has(s,o)?"function"==typeof s.get?s.get(o):s[o]:i}function remove(s,o){if(!isDataStructure(s))throw new TypeError("Cannot update non-data-structure value: "+s);if(isImmutable(s)){if(!s.remove)throw new TypeError("Cannot update immutable value without .remove() method: "+s);return s.remove(o)}if(!ce.call(s,o))return s;var i=shallowCopy(s);return Array.isArray(i)?i.splice(o,1):delete i[o],i}function set(s,o,i){if(isProtoKey(o))return s;if(!isDataStructure(s))throw new TypeError("Cannot update non-data-structure value: "+s);if(isImmutable(s)){if(!s.set)throw new TypeError("Cannot update immutable value without .set() method: "+s);return s.set(o,i)}if(ce.call(s,o)&&i===s[o])return s;var a=shallowCopy(s);return a[o]=i,a}function updateIn(s,o,i,a){a||(a=i,i=void 0);var u=updateInDeeply(isImmutable(s),s,coerceKeyPath(o),0,i,a);return u===Z?i:u}function updateInDeeply(s,o,i,a,u,_){var w=o===Z;if(a===i.length){var x=w?u:o,C=_(x);return C===x?o:C}if(!w&&!isDataStructure(o))throw new TypeError("Cannot update within non-data-structure value in path ["+Array.from(i).slice(0,a).map(quoteString)+"]: "+o);var j=i[a],L=w?Z:get(o,j,Z),B=updateInDeeply(L===Z?s:isImmutable(L),L,i,a+1,u,_);return B===L?o:B===Z?remove(o,j):set(w?s?emptyMap():{}:o,j,B)}function removeIn(s,o){return updateIn(s,o,(function(){return Z}))}function deleteIn(s){return removeIn(this,s)}var Et="@@__IMMUTABLE_LIST__@@";function isList(s){return Boolean(s&&s[Et])}var wt=function(s){function List(o){var i=emptyList();if(null==o)return i;if(isList(o))return o;var a=s(o),u=a.size;return 0===u?i:(assertNotInfinite(u),u>0&&u=0&&s=s.size||o<0)return s.withMutations((function(s){o<0?setListBounds(s,o).set(0,i):setListBounds(s,0,o+1).set(o,i)}));o+=s._origin;var a=s._tail,u=s._root,_={value:!1};o>=getTailOffset(s._capacity)?a=updateVNode(a,s.__ownerID,0,o,i,_):u=updateVNode(u,s.__ownerID,s._level,o,i,_);if(!_.value)return s;if(s.__ownerID)return s._root=u,s._tail=a,s.__hash=void 0,s.__altered=!0,s;return makeList(s._origin,s._capacity,s._level,u,a)}(this,s,o)},List.prototype.remove=function remove(s){return this.has(s)?0===s?this.shift():s===this.size-1?this.pop():this.splice(s,1):this},List.prototype.insert=function insert(s,o){return this.splice(s,0,o)},List.prototype.clear=function clear(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=5,this._root=this._tail=this.__hash=void 0,this.__altered=!0,this):emptyList()},List.prototype.push=function push(){var s=arguments,o=this.size;return this.withMutations((function(i){setListBounds(i,0,o+s.length);for(var a=0;a>>o&Y;if(a>=this.array.length)return new kt([],s);var u,_=0===a;if(o>0){var w=this.array[a];if((u=w&&w.removeBefore(s,o-5,i))===w&&_)return this}if(_&&!u)return this;var x=editableVNode(this,s);if(!_)for(var C=0;C>>o&Y;if(u>=this.array.length)return this;if(o>0){var _=this.array[u];if((a=_&&_.removeAfter(s,o-5,i))===_&&u===this.array.length-1)return this}var w=editableVNode(this,s);return w.array.splice(u+1),a&&(w.array[u]=a),w};var Ot={};function iterateList(s,o){var i=s._origin,a=s._capacity,u=getTailOffset(a),_=s._tail;return iterateNodeOrLeaf(s._root,s._level,0);function iterateNodeOrLeaf(s,w,x){return 0===w?function iterateLeaf(s,w){var x=w===u?_&&_.array:s&&s.array,C=w>i?0:i-w,j=a-w;j>U&&(j=U);return function(){if(C===j)return Ot;var s=o?--j:C++;return x&&x[s]}}(s,x):function iterateNode(s,u,_){var w,x=s&&s.array,C=_>i?0:i-_>>u,j=1+(a-_>>u);j>U&&(j=U);return function(){for(;;){if(w){var s=w();if(s!==Ot)return s;w=null}if(C===j)return Ot;var i=o?--j:C++;w=iterateNodeOrLeaf(x&&x[i],u-5,_+(i<>>i&Y,C=s&&x0){var j=s&&s.array[x],L=updateVNode(j,o,i-5,a,u,_);return L===j?s:((w=editableVNode(s,o)).array[x]=L,w)}return C&&s.array[x]===u?s:(_&&SetRef(_),w=editableVNode(s,o),void 0===u&&x===w.array.length-1?w.array.pop():w.array[x]=u,w)}function editableVNode(s,o){return o&&s&&o===s.ownerID?s:new kt(s?s.array.slice():[],o)}function listNodeFor(s,o){if(o>=getTailOffset(s._capacity))return s._tail;if(o<1<0;)i=i.array[o>>>a&Y],a-=5;return i}}function setListBounds(s,o,i){!function validateListBoundsRequest(s,o,i){var a=s._origin+(void 0===o?0:o),u=void 0===i?s._capacity:i<0?s._capacity+i:s._origin+i;if(Number.isFinite(u)&&u>At||Number.isFinite(a)&&a<-At||Number.isFinite(u)&&Number.isFinite(a)&&u-a>At)throw new RangeError("Invalid List size: a List cannot hold more than "+At+" (2 ** 30) values.")}(s,o,i),void 0!==o&&(o|=0),void 0!==i&&(i|=0);var a=s.__ownerID||new OwnerID,u=s._origin,_=s._capacity,w=u+o,x=void 0===i?_:i<0?_+i:u+i;if(w===u&&x===_)return s;if(w>=x)return s.clear();for(var C=s._level,j=s._root,L=0;w+L<0;)j=new kt(j&&j.array.length?[void 0,j]:[],a),L+=levelCapacity(C+=5);L&&(w+=L,u+=L,x+=L,_+=L);for(var B=getTailOffset(_),$=getTailOffset(x);$>=levelCapacity(C+5);)j=new kt(j&&j.array.length?[j]:[],a),C+=5;var V=s._tail,z=$B?new kt([],a):V;if(V&&$>B&&w<_&&V.array.length){for(var U=j=editableVNode(j,a),Z=C;Z>5;Z-=5){var ee=B>>>Z&Y;U=U.array[ee]=editableVNode(U.array[ee],a)}U.array[B>>>5&Y]=V}if(x<_&&(z=z&&z.removeAfter(a,0,x)),w>=$)w-=$,x-=$,C=5,j=void 0,z=z&&z.removeBefore(a,0,w);else if(w>u||$>>C&Y;if(ie!==$>>>C&Y)break;ie&&(L+=(1<u&&(j=j.removeBefore(a,C,w-L)),j&&$>>5<<5}var At=Math.pow(2,30);function levelCapacity(s){return s<31?1<=U&&w.size>=2*_.size?(a=(u=w.filter((function(s,o){return void 0!==s&&x!==o}))).toKeyedSeq().map((function(s){return s[0]})).flip().toMap(),s.__ownerID&&(a.__ownerID=u.__ownerID=s.__ownerID)):(a=_.remove(o),u=x===w.size-1?w.pop():w.set(x,void 0))}else if(C){if(i===w.get(x)[1])return s;a=_,u=w.set(x,[o,i])}else a=_.set(o,w.size),u=w.set(w.size,[o,i]);return s.__ownerID?(s.size=a.size,s._map=a,s._list=u,s.__hash=void 0,s.__altered=!0,s):makeOrderedMap(a,u)}jt.isOrderedMap=isOrderedMap,jt.prototype[ie]=!0,jt.prototype[z]=jt.prototype.remove;var Pt="@@__IMMUTABLE_STACK__@@";function isStack(s){return Boolean(s&&s[Pt])}var It=function(s){function Stack(s){return null==s?emptyStack():isStack(s)?s:emptyStack().pushAll(s)}return s&&(Stack.__proto__=s),Stack.prototype=Object.create(s&&s.prototype),Stack.prototype.constructor=Stack,Stack.of=function of(){return this(arguments)},Stack.prototype.toString=function toString(){return this.__toString("Stack [","]")},Stack.prototype.get=function get(s,o){var i=this._head;for(s=wrapIndex(this,s);i&&s--;)i=i.next;return i?i.value:o},Stack.prototype.peek=function peek(){return this._head&&this._head.value},Stack.prototype.push=function push(){var s=arguments;if(0===arguments.length)return this;for(var o=this.size+arguments.length,i=this._head,a=arguments.length-1;a>=0;a--)i={value:s[a],next:i};return this.__ownerID?(this.size=o,this._head=i,this.__hash=void 0,this.__altered=!0,this):makeStack(o,i)},Stack.prototype.pushAll=function pushAll(o){if(0===(o=s(o)).size)return this;if(0===this.size&&isStack(o))return o;assertNotInfinite(o.size);var i=this.size,a=this._head;return o.__iterate((function(s){i++,a={value:s,next:a}}),!0),this.__ownerID?(this.size=i,this._head=a,this.__hash=void 0,this.__altered=!0,this):makeStack(i,a)},Stack.prototype.pop=function pop(){return this.slice(1)},Stack.prototype.clear=function clear(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):emptyStack()},Stack.prototype.slice=function slice(o,i){if(wholeSlice(o,i,this.size))return this;var a=resolveBegin(o,this.size);if(resolveEnd(i,this.size)!==this.size)return s.prototype.slice.call(this,o,i);for(var u=this.size-a,_=this._head;a--;)_=_.next;return this.__ownerID?(this.size=u,this._head=_,this.__hash=void 0,this.__altered=!0,this):makeStack(u,_)},Stack.prototype.__ensureOwner=function __ensureOwner(s){return s===this.__ownerID?this:s?makeStack(this.size,this._head,s,this.__hash):0===this.size?emptyStack():(this.__ownerID=s,this.__altered=!1,this)},Stack.prototype.__iterate=function __iterate(s,o){var i=this;if(o)return new ye(this.toArray()).__iterate((function(o,a){return s(o,a,i)}),o);for(var a=0,u=this._head;u&&!1!==s(u.value,a++,this);)u=u.next;return a},Stack.prototype.__iterator=function __iterator(s,o){if(o)return new ye(this.toArray()).__iterator(s,o);var i=0,a=this._head;return new V((function(){if(a){var o=a.value;return a=a.next,iteratorValue(s,i++,o)}return{value:void 0,done:!0}}))},Stack}(C);It.isStack=isStack;var Tt,Mt=It.prototype;function makeStack(s,o,i,a){var u=Object.create(Mt);return u.size=s,u._head=o,u.__ownerID=i,u.__hash=a,u.__altered=!1,u}function emptyStack(){return Tt||(Tt=makeStack(0))}function reduce(s,o,i,a,u,_){return assertNotInfinite(s.size),s.__iterate((function(s,_,w){u?(u=!1,i=s):i=o.call(a,i,s,_,w)}),_),i}function keyMapper(s,o){return o}function entryMapper(s,o){return[o,s]}function not(s){return function(){for(var o=[],i=arguments.length;i--;)o[i]=arguments[i];return!s.apply(this,o)}}function neg(s){return function(){for(var o=[],i=arguments.length;i--;)o[i]=arguments[i];return-s.apply(this,o)}}function defaultNegComparator(s,o){return so?-1:0}function deepEqual(s,o){if(s===o)return!0;if(!isCollection(o)||void 0!==s.size&&void 0!==o.size&&s.size!==o.size||void 0!==s.__hash&&void 0!==o.__hash&&s.__hash!==o.__hash||isKeyed(s)!==isKeyed(o)||isIndexed(s)!==isIndexed(o)||isOrdered(s)!==isOrdered(o))return!1;if(0===s.size&&0===o.size)return!0;var i=!isAssociative(s);if(isOrdered(s)){var a=s.entries();return o.every((function(s,o){var u=a.next().value;return u&&is(u[1],s)&&(i||is(u[0],o))}))&&a.next().done}var u=!1;if(void 0===s.size)if(void 0===o.size)"function"==typeof s.cacheResult&&s.cacheResult();else{u=!0;var _=s;s=o,o=_}var w=!0,x=o.__iterate((function(o,a){if(i?!s.has(o):u?!is(o,s.get(a,Z)):!is(s.get(a,Z),o))return w=!1,!1}));return w&&s.size===x}Mt[Pt]=!0,Mt.shift=Mt.pop,Mt.unshift=Mt.push,Mt.unshiftAll=Mt.pushAll,Mt.withMutations=withMutations,Mt.wasAltered=wasAltered,Mt.asImmutable=asImmutable,Mt["@@transducer/init"]=Mt.asMutable=asMutable,Mt["@@transducer/step"]=function(s,o){return s.unshift(o)},Mt["@@transducer/result"]=function(s){return s.asImmutable()};var Nt,Rt=function(s){function Range(s,o,i){if(void 0===i&&(i=1),!(this instanceof Range))return new Range(s,o,i);if(invariant(0!==i,"Cannot step a Range by 0"),invariant(void 0!==s,"You must define a start value when using Range"),invariant(void 0!==o,"You must define an end value when using Range"),i=Math.abs(i),o=0&&o=0&&i>>-15,461845907),o=we(o<<13|o>>>-13,5),o=o+3864292196^s,o=we(o^o>>>16,2246822507),o=we(o^o>>>13,3266489909),o=smi(o^o>>>16),o}(s.size,a)}function hashMerge(s,o){return s^o+2654435769+(s<<6)+(s>>2)}function mixin(s,o){var keyCopier=function(i){s.prototype[i]=o[i]};return Object.keys(o).forEach(keyCopier),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(o).forEach(keyCopier),s}Bt[Dt]=!0,Bt[z]=Bt.remove,Bt.merge=Bt.concat=Bt.union,Bt.withMutations=withMutations,Bt.asImmutable=asImmutable,Bt["@@transducer/init"]=Bt.asMutable=asMutable,Bt["@@transducer/step"]=function(s,o){return s.add(o)},Bt["@@transducer/result"]=function(s){return s.asImmutable()},Bt.__empty=emptySet,Bt.__make=makeSet,w.Iterator=V,mixin(w,{toArray:function toArray(){assertNotInfinite(this.size);var s=new Array(this.size||0),o=isKeyed(this),i=0;return this.__iterate((function(a,u){s[i++]=o?[u,a]:a})),s},toIndexedSeq:function toIndexedSeq(){return new rt(this)},toJS:function toJS$1(){return toJS(this)},toKeyedSeq:function toKeyedSeq(){return new tt(this,!0)},toMap:function toMap(){return ct(this.toKeyedSeq())},toObject,toOrderedMap:function toOrderedMap(){return jt(this.toKeyedSeq())},toOrderedSet:function toOrderedSet(){return Ut(isKeyed(this)?this.valueSeq():this)},toSet:function toSet(){return Ft(isKeyed(this)?this.valueSeq():this)},toSetSeq:function toSetSeq(){return new nt(this)},toSeq:function toSeq(){return isIndexed(this)?this.toIndexedSeq():isKeyed(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function toStack(){return It(isKeyed(this)?this.valueSeq():this)},toList:function toList(){return wt(isKeyed(this)?this.valueSeq():this)},toString:function toString(){return"[Collection]"},__toString:function __toString(s,o){return 0===this.size?s+o:s+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+o},concat:function concat(){for(var s=[],o=arguments.length;o--;)s[o]=arguments[o];return reify(this,function concatFactory(s,o){var i=isKeyed(s),a=[s].concat(o).map((function(s){return isCollection(s)?i&&(s=x(s)):s=i?keyedSeqFromValue(s):indexedSeqFromValue(Array.isArray(s)?s:[s]),s})).filter((function(s){return 0!==s.size}));if(0===a.length)return s;if(1===a.length){var u=a[0];if(u===s||i&&isKeyed(u)||isIndexed(s)&&isIndexed(u))return u}return new ot(a)}(this,s))},includes:function includes(s){return this.some((function(o){return is(o,s)}))},entries:function entries(){return this.__iterator(2)},every:function every(s,o){assertNotInfinite(this.size);var i=!0;return this.__iterate((function(a,u,_){if(!s.call(o,a,u,_))return i=!1,!1})),i},filter:function filter(s,o){return reify(this,filterFactory(this,s,o,!0))},partition:function partition(s,o){return function partitionFactory(s,o,i){var a=isKeyed(s),u=[[],[]];s.__iterate((function(_,w){u[o.call(i,_,w,s)?1:0].push(a?[w,_]:_)}));var _=collectionClass(s);return u.map((function(o){return reify(s,_(o))}))}(this,s,o)},find:function find(s,o,i){var a=this.findEntry(s,o);return a?a[1]:i},forEach:function forEach(s,o){return assertNotInfinite(this.size),this.__iterate(o?s.bind(o):s)},join:function join(s){assertNotInfinite(this.size),s=void 0!==s?""+s:",";var o="",i=!0;return this.__iterate((function(a){i?i=!1:o+=s,o+=null!=a?a.toString():""})),o},keys:function keys(){return this.__iterator(0)},map:function map(s,o){return reify(this,mapFactory(this,s,o))},reduce:function reduce$1(s,o,i){return reduce(this,s,o,i,arguments.length<2,!1)},reduceRight:function reduceRight(s,o,i){return reduce(this,s,o,i,arguments.length<2,!0)},reverse:function reverse(){return reify(this,reverseFactory(this,!0))},slice:function slice(s,o){return reify(this,sliceFactory(this,s,o,!0))},some:function some(s,o){assertNotInfinite(this.size);var i=!1;return this.__iterate((function(a,u,_){if(s.call(o,a,u,_))return i=!0,!1})),i},sort:function sort(s){return reify(this,sortFactory(this,s))},values:function values(){return this.__iterator(1)},butLast:function butLast(){return this.slice(0,-1)},isEmpty:function isEmpty(){return void 0!==this.size?0===this.size:!this.some((function(){return!0}))},count:function count(s,o){return ensureSize(s?this.toSeq().filter(s,o):this)},countBy:function countBy(s,o){return function countByFactory(s,o,i){var a=ct().asMutable();return s.__iterate((function(u,_){a.update(o.call(i,u,_,s),0,(function(s){return s+1}))})),a.asImmutable()}(this,s,o)},equals:function equals(s){return deepEqual(this,s)},entrySeq:function entrySeq(){var s=this;if(s._cache)return new ye(s._cache);var o=s.toSeq().map(entryMapper).toIndexedSeq();return o.fromEntrySeq=function(){return s.toSeq()},o},filterNot:function filterNot(s,o){return this.filter(not(s),o)},findEntry:function findEntry(s,o,i){var a=i;return this.__iterate((function(i,u,_){if(s.call(o,i,u,_))return a=[u,i],!1})),a},findKey:function findKey(s,o){var i=this.findEntry(s,o);return i&&i[0]},findLast:function findLast(s,o,i){return this.toKeyedSeq().reverse().find(s,o,i)},findLastEntry:function findLastEntry(s,o,i){return this.toKeyedSeq().reverse().findEntry(s,o,i)},findLastKey:function findLastKey(s,o){return this.toKeyedSeq().reverse().findKey(s,o)},first:function first(s){return this.find(returnTrue,null,s)},flatMap:function flatMap(s,o){return reify(this,function flatMapFactory(s,o,i){var a=collectionClass(s);return s.toSeq().map((function(u,_){return a(o.call(i,u,_,s))})).flatten(!0)}(this,s,o))},flatten:function flatten(s){return reify(this,flattenFactory(this,s,!0))},fromEntrySeq:function fromEntrySeq(){return new st(this)},get:function get(s,o){return this.find((function(o,i){return is(i,s)}),void 0,o)},getIn,groupBy:function groupBy(s,o){return function groupByFactory(s,o,i){var a=isKeyed(s),u=(isOrdered(s)?jt():ct()).asMutable();s.__iterate((function(_,w){u.update(o.call(i,_,w,s),(function(s){return(s=s||[]).push(a?[w,_]:_),s}))}));var _=collectionClass(s);return u.map((function(o){return reify(s,_(o))})).asImmutable()}(this,s,o)},has:function has(s){return this.get(s,Z)!==Z},hasIn:function hasIn(s){return hasIn$1(this,s)},isSubset:function isSubset(s){return s="function"==typeof s.includes?s:w(s),this.every((function(o){return s.includes(o)}))},isSuperset:function isSuperset(s){return(s="function"==typeof s.isSubset?s:w(s)).isSubset(this)},keyOf:function keyOf(s){return this.findKey((function(o){return is(o,s)}))},keySeq:function keySeq(){return this.toSeq().map(keyMapper).toIndexedSeq()},last:function last(s){return this.toSeq().reverse().first(s)},lastKeyOf:function lastKeyOf(s){return this.toKeyedSeq().reverse().keyOf(s)},max:function max(s){return maxFactory(this,s)},maxBy:function maxBy(s,o){return maxFactory(this,o,s)},min:function min(s){return maxFactory(this,s?neg(s):defaultNegComparator)},minBy:function minBy(s,o){return maxFactory(this,o?neg(o):defaultNegComparator,s)},rest:function rest(){return this.slice(1)},skip:function skip(s){return 0===s?this:this.slice(Math.max(0,s))},skipLast:function skipLast(s){return 0===s?this:this.slice(0,-Math.max(0,s))},skipWhile:function skipWhile(s,o){return reify(this,skipWhileFactory(this,s,o,!0))},skipUntil:function skipUntil(s,o){return this.skipWhile(not(s),o)},sortBy:function sortBy(s,o){return reify(this,sortFactory(this,o,s))},take:function take(s){return this.slice(0,Math.max(0,s))},takeLast:function takeLast(s){return this.slice(-Math.max(0,s))},takeWhile:function takeWhile(s,o){return reify(this,function takeWhileFactory(s,o,i){var a=makeSequence(s);return a.__iterateUncached=function(a,u){var _=this;if(u)return this.cacheResult().__iterate(a,u);var w=0;return s.__iterate((function(s,u,x){return o.call(i,s,u,x)&&++w&&a(s,u,_)})),w},a.__iteratorUncached=function(a,u){var _=this;if(u)return this.cacheResult().__iterator(a,u);var w=s.__iterator(2,u),x=!0;return new V((function(){if(!x)return{value:void 0,done:!0};var s=w.next();if(s.done)return s;var u=s.value,C=u[0],j=u[1];return o.call(i,j,C,_)?2===a?s:iteratorValue(a,C,j,s):(x=!1,{value:void 0,done:!0})}))},a}(this,s,o))},takeUntil:function takeUntil(s,o){return this.takeWhile(not(s),o)},update:function update(s){return s(this)},valueSeq:function valueSeq(){return this.toIndexedSeq()},hashCode:function hashCode(){return this.__hash||(this.__hash=hashCollection(this))}});var $t=w.prototype;$t[_]=!0,$t[$]=$t.values,$t.toJSON=$t.toArray,$t.__toStringMapper=quoteString,$t.inspect=$t.toSource=function(){return this.toString()},$t.chain=$t.flatMap,$t.contains=$t.includes,mixin(x,{flip:function flip(){return reify(this,flipFactory(this))},mapEntries:function mapEntries(s,o){var i=this,a=0;return reify(this,this.toSeq().map((function(u,_){return s.call(o,[_,u],a++,i)})).fromEntrySeq())},mapKeys:function mapKeys(s,o){var i=this;return reify(this,this.toSeq().flip().map((function(a,u){return s.call(o,a,u,i)})).flip())}});var qt=x.prototype;qt[u]=!0,qt[$]=$t.entries,qt.toJSON=toObject,qt.__toStringMapper=function(s,o){return quoteString(o)+": "+quoteString(s)},mixin(C,{toKeyedSeq:function toKeyedSeq(){return new tt(this,!1)},filter:function filter(s,o){return reify(this,filterFactory(this,s,o,!1))},findIndex:function findIndex(s,o){var i=this.findEntry(s,o);return i?i[0]:-1},indexOf:function indexOf(s){var o=this.keyOf(s);return void 0===o?-1:o},lastIndexOf:function lastIndexOf(s){var o=this.lastKeyOf(s);return void 0===o?-1:o},reverse:function reverse(){return reify(this,reverseFactory(this,!1))},slice:function slice(s,o){return reify(this,sliceFactory(this,s,o,!1))},splice:function splice(s,o){var i=arguments.length;if(o=Math.max(o||0,0),0===i||2===i&&!o)return this;s=resolveBegin(s,s<0?this.count():this.size);var a=this.slice(0,s);return reify(this,1===i?a:a.concat(arrCopy(arguments,2),this.slice(s+o)))},findLastIndex:function findLastIndex(s,o){var i=this.findLastEntry(s,o);return i?i[0]:-1},first:function first(s){return this.get(0,s)},flatten:function flatten(s){return reify(this,flattenFactory(this,s,!1))},get:function get(s,o){return(s=wrapIndex(this,s))<0||this.size===1/0||void 0!==this.size&&s>this.size?o:this.find((function(o,i){return i===s}),void 0,o)},has:function has(s){return(s=wrapIndex(this,s))>=0&&(void 0!==this.size?this.size===1/0||s2?[]:void 0,{"":s})}function fromJSWith(s,o,i,a,u,_){if("string"!=typeof i&&!isImmutable(i)&&(isArrayLike(i)||hasIterator(i)||isPlainObject(i))){if(~s.indexOf(i))throw new TypeError("Cannot convert circular structure to Immutable");s.push(i),u&&""!==a&&u.push(a);var w=o.call(_,a,le(i).map((function(a,_){return fromJSWith(s,o,a,_,u,i)})),u&&u.slice());return s.pop(),u&&u.pop(),w}return i}function defaultConverter(s,o){return isIndexed(o)?o.toList():isKeyed(o)?o.toMap():o.toSet()}var Qt="5.1.9",Zt=w},56698(s){"function"==typeof Object.create?s.exports=function inherits(s,o){o&&(s.super_=o,s.prototype=Object.create(o.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}))}:s.exports=function inherits(s,o){if(o){s.super_=o;var TempCtor=function(){};TempCtor.prototype=o.prototype,s.prototype=new TempCtor,s.prototype.constructor=s}}},69600(s){"use strict";var o,i,a=Function.prototype.toString,u="object"==typeof Reflect&&null!==Reflect&&Reflect.apply;if("function"==typeof u&&"function"==typeof Object.defineProperty)try{o=Object.defineProperty({},"length",{get:function(){throw i}}),i={},u((function(){throw 42}),null,o)}catch(s){s!==i&&(u=null)}else u=null;var _=/^\s*class\b/,w=function isES6ClassFunction(s){try{var o=a.call(s);return _.test(o)}catch(s){return!1}},x=function tryFunctionToStr(s){try{return!w(s)&&(a.call(s),!0)}catch(s){return!1}},C=Object.prototype.toString,j="function"==typeof Symbol&&!!Symbol.toStringTag,L=!(0 in[,]),B=function isDocumentDotAll(){return!1};if("object"==typeof document){var $=document.all;C.call($)===C.call(document.all)&&(B=function isDocumentDotAll(s){if((L||!s)&&(void 0===s||"object"==typeof s))try{var o=C.call(s);return("[object HTMLAllCollection]"===o||"[object HTML document.all class]"===o||"[object HTMLCollection]"===o||"[object Object]"===o)&&null==s("")}catch(s){}return!1})}s.exports=u?function isCallable(s){if(B(s))return!0;if(!s)return!1;if("function"!=typeof s&&"object"!=typeof s)return!1;try{u(s,null,o)}catch(s){if(s!==i)return!1}return!w(s)&&x(s)}:function isCallable(s){if(B(s))return!0;if(!s)return!1;if("function"!=typeof s&&"object"!=typeof s)return!1;if(j)return x(s);if(w(s))return!1;var o=C.call(s);return!("[object Function]"!==o&&"[object GeneratorFunction]"!==o&&!/^\[object HTML/.test(o))&&x(s)}},35680(s,o,i){"use strict";var a=i(25767);s.exports=function isTypedArray(s){return!!a(s)}},64634(s){var o={}.toString;s.exports=Array.isArray||function(s){return"[object Array]"==o.call(s)}},5419(s){s.exports=function(s,o,i,a){var u=new Blob(void 0!==a?[a,s]:[s],{type:i||"application/octet-stream"});if(void 0!==window.navigator.msSaveBlob)window.navigator.msSaveBlob(u,o);else{var _=window.URL&&window.URL.createObjectURL?window.URL.createObjectURL(u):window.webkitURL.createObjectURL(u),w=document.createElement("a");w.style.display="none",w.href=_,w.setAttribute("download",o),void 0===w.download&&w.setAttribute("target","_blank"),document.body.appendChild(w),w.click(),setTimeout((function(){document.body.removeChild(w),window.URL.revokeObjectURL(_)}),200)}}},20181(s,o,i){var a=/^\s+|\s+$/g,u=/^[-+]0x[0-9a-f]+$/i,_=/^0b[01]+$/i,w=/^0o[0-7]+$/i,x=parseInt,C="object"==typeof i.g&&i.g&&i.g.Object===Object&&i.g,j="object"==typeof self&&self&&self.Object===Object&&self,L=C||j||Function("return this")(),B=Object.prototype.toString,$=Math.max,V=Math.min,now=function(){return L.Date.now()};function isObject(s){var o=typeof s;return!!s&&("object"==o||"function"==o)}function toNumber(s){if("number"==typeof s)return s;if(function isSymbol(s){return"symbol"==typeof s||function isObjectLike(s){return!!s&&"object"==typeof s}(s)&&"[object Symbol]"==B.call(s)}(s))return NaN;if(isObject(s)){var o="function"==typeof s.valueOf?s.valueOf():s;s=isObject(o)?o+"":o}if("string"!=typeof s)return 0===s?s:+s;s=s.replace(a,"");var i=_.test(s);return i||w.test(s)?x(s.slice(2),i?2:8):u.test(s)?NaN:+s}s.exports=function debounce(s,o,i){var a,u,_,w,x,C,j=0,L=!1,B=!1,z=!0;if("function"!=typeof s)throw new TypeError("Expected a function");function invokeFunc(o){var i=a,_=u;return a=u=void 0,j=o,w=s.apply(_,i)}function shouldInvoke(s){var i=s-C;return void 0===C||i>=o||i<0||B&&s-j>=_}function timerExpired(){var s=now();if(shouldInvoke(s))return trailingEdge(s);x=setTimeout(timerExpired,function remainingWait(s){var i=o-(s-C);return B?V(i,_-(s-j)):i}(s))}function trailingEdge(s){return x=void 0,z&&a?invokeFunc(s):(a=u=void 0,w)}function debounced(){var s=now(),i=shouldInvoke(s);if(a=arguments,u=this,C=s,i){if(void 0===x)return function leadingEdge(s){return j=s,x=setTimeout(timerExpired,o),L?invokeFunc(s):w}(C);if(B)return x=setTimeout(timerExpired,o),invokeFunc(C)}return void 0===x&&(x=setTimeout(timerExpired,o)),w}return o=toNumber(o)||0,isObject(i)&&(L=!!i.leading,_=(B="maxWait"in i)?$(toNumber(i.maxWait)||0,o):_,z="trailing"in i?!!i.trailing:z),debounced.cancel=function cancel(){void 0!==x&&clearTimeout(x),j=0,a=C=u=x=void 0},debounced.flush=function flush(){return void 0===x?w:trailingEdge(now())},debounced}},55580(s,o,i){var a=i(56110)(i(9325),"DataView");s.exports=a},21549(s,o,i){var a=i(22032),u=i(63862),_=i(66721),w=i(12749),x=i(35749);function Hash(s){var o=-1,i=null==s?0:s.length;for(this.clear();++o-1}},70695(s,o,i){var a=i(78096),u=i(72428),_=i(56449),w=i(3656),x=i(30361),C=i(37167),j=Object.prototype.hasOwnProperty;s.exports=function arrayLikeKeys(s,o){var i=_(s),L=!i&&u(s),B=!i&&!L&&w(s),$=!i&&!L&&!B&&C(s),V=i||L||B||$,z=V?a(s.length,String):[],U=z.length;for(var Y in s)!o&&!j.call(s,Y)||V&&("length"==Y||B&&("offset"==Y||"parent"==Y)||$&&("buffer"==Y||"byteLength"==Y||"byteOffset"==Y)||x(Y,U))||z.push(Y);return z}},34932(s){s.exports=function arrayMap(s,o){for(var i=-1,a=null==s?0:s.length,u=Array(a);++i0&&i(j)?o>1?baseFlatten(j,o-1,i,_,w):a(w,j):_||(w[w.length]=j)}return w}},86649(s,o,i){var a=i(83221)();s.exports=a},30641(s,o,i){var a=i(86649),u=i(95950);s.exports=function baseForOwn(s,o){return s&&a(s,o,u)}},47422(s,o,i){var a=i(31769),u=i(77797);s.exports=function baseGet(s,o){for(var i=0,_=(o=a(o,s)).length;null!=s&&i<_;)s=s[u(o[i++])];return i&&i==_?s:void 0}},82199(s,o,i){var a=i(14528),u=i(56449);s.exports=function baseGetAllKeys(s,o,i){var _=o(s);return u(s)?_:a(_,i(s))}},72552(s,o,i){var a=i(51873),u=i(659),_=i(59350),w=a?a.toStringTag:void 0;s.exports=function baseGetTag(s){return null==s?void 0===s?"[object Undefined]":"[object Null]":w&&w in Object(s)?u(s):_(s)}},20426(s){var o=Object.prototype.hasOwnProperty;s.exports=function baseHas(s,i){return null!=s&&o.call(s,i)}},28077(s){s.exports=function baseHasIn(s,o){return null!=s&&o in Object(s)}},96131(s,o,i){var a=i(2523),u=i(85463),_=i(76959);s.exports=function baseIndexOf(s,o,i){return o==o?_(s,o,i):a(s,u,i)}},27534(s,o,i){var a=i(72552),u=i(40346);s.exports=function baseIsArguments(s){return u(s)&&"[object Arguments]"==a(s)}},60270(s,o,i){var a=i(87068),u=i(40346);s.exports=function baseIsEqual(s,o,i,_,w){return s===o||(null==s||null==o||!u(s)&&!u(o)?s!=s&&o!=o:a(s,o,i,_,baseIsEqual,w))}},87068(s,o,i){var a=i(37217),u=i(25911),_=i(21986),w=i(50689),x=i(5861),C=i(56449),j=i(3656),L=i(37167),B="[object Arguments]",$="[object Array]",V="[object Object]",z=Object.prototype.hasOwnProperty;s.exports=function baseIsEqualDeep(s,o,i,U,Y,Z){var ee=C(s),ie=C(o),ae=ee?$:x(s),ce=ie?$:x(o),le=(ae=ae==B?V:ae)==V,pe=(ce=ce==B?V:ce)==V,de=ae==ce;if(de&&j(s)){if(!j(o))return!1;ee=!0,le=!1}if(de&&!le)return Z||(Z=new a),ee||L(s)?u(s,o,i,U,Y,Z):_(s,o,ae,i,U,Y,Z);if(!(1&i)){var fe=le&&z.call(s,"__wrapped__"),ye=pe&&z.call(o,"__wrapped__");if(fe||ye){var be=fe?s.value():s,Se=ye?o.value():o;return Z||(Z=new a),Y(be,Se,i,U,Z)}}return!!de&&(Z||(Z=new a),w(s,o,i,U,Y,Z))}},29172(s,o,i){var a=i(5861),u=i(40346);s.exports=function baseIsMap(s){return u(s)&&"[object Map]"==a(s)}},41799(s,o,i){var a=i(37217),u=i(60270);s.exports=function baseIsMatch(s,o,i,_){var w=i.length,x=w,C=!_;if(null==s)return!x;for(s=Object(s);w--;){var j=i[w];if(C&&j[2]?j[1]!==s[j[0]]:!(j[0]in s))return!1}for(;++wu?0:u+o),(i=i>u?u:i)<0&&(i+=u),u=o>i?0:i-o>>>0,o>>>=0;for(var _=Array(u);++a=u?s:a(s,o,i)}},49653(s,o,i){var a=i(37828);s.exports=function cloneArrayBuffer(s){var o=new s.constructor(s.byteLength);return new a(o).set(new a(s)),o}},93290(s,o,i){s=i.nmd(s);var a=i(9325),u=o&&!o.nodeType&&o,_=u&&s&&!s.nodeType&&s,w=_&&_.exports===u?a.Buffer:void 0,x=w?w.allocUnsafe:void 0;s.exports=function cloneBuffer(s,o){if(o)return s.slice();var i=s.length,a=x?x(i):new s.constructor(i);return s.copy(a),a}},76169(s,o,i){var a=i(49653);s.exports=function cloneDataView(s,o){var i=o?a(s.buffer):s.buffer;return new s.constructor(i,s.byteOffset,s.byteLength)}},73201(s){var o=/\w*$/;s.exports=function cloneRegExp(s){var i=new s.constructor(s.source,o.exec(s));return i.lastIndex=s.lastIndex,i}},93736(s,o,i){var a=i(51873),u=a?a.prototype:void 0,_=u?u.valueOf:void 0;s.exports=function cloneSymbol(s){return _?Object(_.call(s)):{}}},71961(s,o,i){var a=i(49653);s.exports=function cloneTypedArray(s,o){var i=o?a(s.buffer):s.buffer;return new s.constructor(i,s.byteOffset,s.length)}},91596(s){var o=Math.max;s.exports=function composeArgs(s,i,a,u){for(var _=-1,w=s.length,x=a.length,C=-1,j=i.length,L=o(w-x,0),B=Array(j+L),$=!u;++C1?i[_-1]:void 0,x=_>2?i[2]:void 0;for(w=s.length>3&&"function"==typeof w?(_--,w):void 0,x&&u(i[0],i[1],x)&&(w=_<3?void 0:w,_=1),o=Object(o);++a<_;){var C=i[a];C&&s(o,C,a,w)}return o}))}},38329(s,o,i){var a=i(64894);s.exports=function createBaseEach(s,o){return function(i,u){if(null==i)return i;if(!a(i))return s(i,u);for(var _=i.length,w=o?_:-1,x=Object(i);(o?w--:++w<_)&&!1!==u(x[w],w,x););return i}}},83221(s){s.exports=function createBaseFor(s){return function(o,i,a){for(var u=-1,_=Object(o),w=a(o),x=w.length;x--;){var C=w[s?x:++u];if(!1===i(_[C],C,_))break}return o}}},11842(s,o,i){var a=i(82819),u=i(9325);s.exports=function createBind(s,o,i){var _=1&o,w=a(s);return function wrapper(){return(this&&this!==u&&this instanceof wrapper?w:s).apply(_?i:this,arguments)}}},12507(s,o,i){var a=i(28754),u=i(49698),_=i(63912),w=i(13222);s.exports=function createCaseFirst(s){return function(o){o=w(o);var i=u(o)?_(o):void 0,x=i?i[0]:o.charAt(0),C=i?a(i,1).join(""):o.slice(1);return x[s]()+C}}},45539(s,o,i){var a=i(40882),u=i(50828),_=i(66645),w=RegExp("['’]","g");s.exports=function createCompounder(s){return function(o){return a(_(u(o).replace(w,"")),s,"")}}},82819(s,o,i){var a=i(39344),u=i(23805);s.exports=function createCtor(s){return function(){var o=arguments;switch(o.length){case 0:return new s;case 1:return new s(o[0]);case 2:return new s(o[0],o[1]);case 3:return new s(o[0],o[1],o[2]);case 4:return new s(o[0],o[1],o[2],o[3]);case 5:return new s(o[0],o[1],o[2],o[3],o[4]);case 6:return new s(o[0],o[1],o[2],o[3],o[4],o[5]);case 7:return new s(o[0],o[1],o[2],o[3],o[4],o[5],o[6])}var i=a(s.prototype),_=s.apply(i,o);return u(_)?_:i}}},77078(s,o,i){var a=i(91033),u=i(82819),_=i(37471),w=i(18073),x=i(11287),C=i(36306),j=i(9325);s.exports=function createCurry(s,o,i){var L=u(s);return function wrapper(){for(var u=arguments.length,B=Array(u),$=u,V=x(wrapper);$--;)B[$]=arguments[$];var z=u<3&&B[0]!==V&&B[u-1]!==V?[]:C(B,V);return(u-=z.length)-1?x[C?o[j]:j]:void 0}}},37471(s,o,i){var a=i(91596),u=i(53320),_=i(58523),w=i(82819),x=i(18073),C=i(11287),j=i(68294),L=i(36306),B=i(9325);s.exports=function createHybrid(s,o,i,$,V,z,U,Y,Z,ee){var ie=128&o,ae=1&o,ce=2&o,le=24&o,pe=512&o,de=ce?void 0:w(s);return function wrapper(){for(var fe=arguments.length,ye=Array(fe),be=fe;be--;)ye[be]=arguments[be];if(le)var Se=C(wrapper),_e=_(ye,Se);if($&&(ye=a(ye,$,V,le)),z&&(ye=u(ye,z,U,le)),fe-=_e,le&&fe1&&ye.reverse(),ie&&ZL))return!1;var $=C.get(s),V=C.get(o);if($&&V)return $==o&&V==s;var z=-1,U=!0,Y=2&i?new a:void 0;for(C.set(s,o),C.set(o,s);++z1?"& ":"")+i[u],i=i.join(a>2?", ":" "),s.replace(o,"{\n/* [wrapped with "+i+"] */\n")}},45891(s,o,i){var a=i(51873),u=i(72428),_=i(56449),w=a?a.isConcatSpreadable:void 0;s.exports=function isFlattenable(s){return _(s)||u(s)||!!(w&&s&&s[w])}},30361(s){var o=/^(?:0|[1-9]\d*)$/;s.exports=function isIndex(s,i){var a=typeof s;return!!(i=null==i?9007199254740991:i)&&("number"==a||"symbol"!=a&&o.test(s))&&s>-1&&s%1==0&&s-1}},31175(s,o,i){var a=i(26025);s.exports=function listCacheSet(s,o){var i=this.__data__,u=a(i,s);return u<0?(++this.size,i.push([s,o])):i[u][1]=o,this}},63040(s,o,i){var a=i(21549),u=i(80079),_=i(68223);s.exports=function mapCacheClear(){this.size=0,this.__data__={hash:new a,map:new(_||u),string:new a}}},17670(s,o,i){var a=i(12651);s.exports=function mapCacheDelete(s){var o=a(this,s).delete(s);return this.size-=o?1:0,o}},90289(s,o,i){var a=i(12651);s.exports=function mapCacheGet(s){return a(this,s).get(s)}},4509(s,o,i){var a=i(12651);s.exports=function mapCacheHas(s){return a(this,s).has(s)}},72949(s,o,i){var a=i(12651);s.exports=function mapCacheSet(s,o){var i=a(this,s),u=i.size;return i.set(s,o),this.size+=i.size==u?0:1,this}},20317(s){s.exports=function mapToArray(s){var o=-1,i=Array(s.size);return s.forEach((function(s,a){i[++o]=[a,s]})),i}},67197(s){s.exports=function matchesStrictComparable(s,o){return function(i){return null!=i&&(i[s]===o&&(void 0!==o||s in Object(i)))}}},62224(s,o,i){var a=i(50104);s.exports=function memoizeCapped(s){var o=a(s,(function(s){return 500===i.size&&i.clear(),s})),i=o.cache;return o}},3209(s,o,i){var a=i(91596),u=i(53320),_=i(36306),w="__lodash_placeholder__",x=128,C=Math.min;s.exports=function mergeData(s,o){var i=s[1],j=o[1],L=i|j,B=L<131,$=j==x&&8==i||j==x&&256==i&&s[7].length<=o[8]||384==j&&o[7].length<=o[8]&&8==i;if(!B&&!$)return s;1&j&&(s[2]=o[2],L|=1&i?0:4);var V=o[3];if(V){var z=s[3];s[3]=z?a(z,V,o[4]):V,s[4]=z?_(s[3],w):o[4]}return(V=o[5])&&(z=s[5],s[5]=z?u(z,V,o[6]):V,s[6]=z?_(s[5],w):o[6]),(V=o[7])&&(s[7]=V),j&x&&(s[8]=null==s[8]?o[8]:C(s[8],o[8])),null==s[9]&&(s[9]=o[9]),s[0]=o[0],s[1]=L,s}},48152(s,o,i){var a=i(28303),u=a&&new a;s.exports=u},81042(s,o,i){var a=i(56110)(Object,"create");s.exports=a},3650(s,o,i){var a=i(74335)(Object.keys,Object);s.exports=a},90181(s){s.exports=function nativeKeysIn(s){var o=[];if(null!=s)for(var i in Object(s))o.push(i);return o}},86009(s,o,i){s=i.nmd(s);var a=i(34840),u=o&&!o.nodeType&&o,_=u&&s&&!s.nodeType&&s,w=_&&_.exports===u&&a.process,x=function(){try{var s=_&&_.require&&_.require("util").types;return s||w&&w.binding&&w.binding("util")}catch(s){}}();s.exports=x},59350(s){var o=Object.prototype.toString;s.exports=function objectToString(s){return o.call(s)}},74335(s){s.exports=function overArg(s,o){return function(i){return s(o(i))}}},56757(s,o,i){var a=i(91033),u=Math.max;s.exports=function overRest(s,o,i){return o=u(void 0===o?s.length-1:o,0),function(){for(var _=arguments,w=-1,x=u(_.length-o,0),C=Array(x);++w0){if(++i>=800)return arguments[0]}else i=0;return s.apply(void 0,arguments)}}},51420(s,o,i){var a=i(80079);s.exports=function stackClear(){this.__data__=new a,this.size=0}},90938(s){s.exports=function stackDelete(s){var o=this.__data__,i=o.delete(s);return this.size=o.size,i}},63605(s){s.exports=function stackGet(s){return this.__data__.get(s)}},29817(s){s.exports=function stackHas(s){return this.__data__.has(s)}},80945(s,o,i){var a=i(80079),u=i(68223),_=i(53661);s.exports=function stackSet(s,o){var i=this.__data__;if(i instanceof a){var w=i.__data__;if(!u||w.length<199)return w.push([s,o]),this.size=++i.size,this;i=this.__data__=new _(w)}return i.set(s,o),this.size=i.size,this}},76959(s){s.exports=function strictIndexOf(s,o,i){for(var a=i-1,u=s.length;++a=o||i<0||Y&&s-z>=L}function timerExpired(){var s=u();if(shouldInvoke(s))return trailingEdge(s);$=setTimeout(timerExpired,function remainingWait(s){var i=o-(s-V);return Y?x(i,L-(s-z)):i}(s))}function trailingEdge(s){return $=void 0,Z&&C?invokeFunc(s):(C=j=void 0,B)}function debounced(){var s=u(),i=shouldInvoke(s);if(C=arguments,j=this,V=s,i){if(void 0===$)return function leadingEdge(s){return z=s,$=setTimeout(timerExpired,o),U?invokeFunc(s):B}(V);if(Y)return clearTimeout($),$=setTimeout(timerExpired,o),invokeFunc(V)}return void 0===$&&($=setTimeout(timerExpired,o)),B}return o=_(o)||0,a(i)&&(U=!!i.leading,L=(Y="maxWait"in i)?w(_(i.maxWait)||0,o):L,Z="trailing"in i?!!i.trailing:Z),debounced.cancel=function cancel(){void 0!==$&&clearTimeout($),z=0,C=V=j=$=void 0},debounced.flush=function flush(){return void 0===$?B:trailingEdge(u())},debounced}},50828(s,o,i){var a=i(24647),u=i(13222),_=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,w=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g");s.exports=function deburr(s){return(s=u(s))&&s.replace(_,a).replace(w,"")}},75288(s){s.exports=function eq(s,o){return s===o||s!=s&&o!=o}},60680(s,o,i){var a=i(13222),u=/[\\^$.*+?()[\]{}|]/g,_=RegExp(u.source);s.exports=function escapeRegExp(s){return(s=a(s))&&_.test(s)?s.replace(u,"\\$&"):s}},7309(s,o,i){var a=i(62006)(i(24713));s.exports=a},24713(s,o,i){var a=i(2523),u=i(15389),_=i(61489),w=Math.max;s.exports=function findIndex(s,o,i){var x=null==s?0:s.length;if(!x)return-1;var C=null==i?0:_(i);return C<0&&(C=w(x+C,0)),a(s,u(o,3),C)}},35970(s,o,i){var a=i(83120);s.exports=function flatten(s){return(null==s?0:s.length)?a(s,1):[]}},73424(s,o,i){var a=i(16962),u=i(2874),_=Array.prototype.push;function baseAry(s,o){return 2==o?function(o,i){return s(o,i)}:function(o){return s(o)}}function cloneArray(s){for(var o=s?s.length:0,i=Array(o);o--;)i[o]=s[o];return i}function wrapImmutable(s,o){return function(){var i=arguments.length;if(i){for(var a=Array(i);i--;)a[i]=arguments[i];var u=a[0]=o.apply(void 0,a);return s.apply(void 0,a),u}}}s.exports=function baseConvert(s,o,i,w){var x="function"==typeof o,C=o===Object(o);if(C&&(w=i,i=o,o=void 0),null==i)throw new TypeError;w||(w={});var j=!("cap"in w)||w.cap,L=!("curry"in w)||w.curry,B=!("fixed"in w)||w.fixed,$=!("immutable"in w)||w.immutable,V=!("rearg"in w)||w.rearg,z=x?i:u,U="curry"in w&&w.curry,Y="fixed"in w&&w.fixed,Z="rearg"in w&&w.rearg,ee=x?i.runInContext():void 0,ie=x?i:{ary:s.ary,assign:s.assign,clone:s.clone,curry:s.curry,forEach:s.forEach,isArray:s.isArray,isError:s.isError,isFunction:s.isFunction,isWeakMap:s.isWeakMap,iteratee:s.iteratee,keys:s.keys,rearg:s.rearg,toInteger:s.toInteger,toPath:s.toPath},ae=ie.ary,ce=ie.assign,le=ie.clone,pe=ie.curry,de=ie.forEach,fe=ie.isArray,ye=ie.isError,be=ie.isFunction,Se=ie.isWeakMap,_e=ie.keys,we=ie.rearg,xe=ie.toInteger,Pe=ie.toPath,Te=_e(a.aryMethod),Re={castArray:function(s){return function(){var o=arguments[0];return fe(o)?s(cloneArray(o)):s.apply(void 0,arguments)}},iteratee:function(s){return function(){var o=arguments[1],i=s(arguments[0],o),a=i.length;return j&&"number"==typeof o?(o=o>2?o-2:1,a&&a<=o?i:baseAry(i,o)):i}},mixin:function(s){return function(o){var i=this;if(!be(i))return s(i,Object(o));var a=[];return de(_e(o),(function(s){be(o[s])&&a.push([s,i.prototype[s]])})),s(i,Object(o)),de(a,(function(s){var o=s[1];be(o)?i.prototype[s[0]]=o:delete i.prototype[s[0]]})),i}},nthArg:function(s){return function(o){var i=o<0?1:xe(o)+1;return pe(s(o),i)}},rearg:function(s){return function(o,i){var a=i?i.length:0;return pe(s(o,i),a)}},runInContext:function(o){return function(i){return baseConvert(s,o(i),w)}}};function castCap(s,o){if(j){var i=a.iterateeRearg[s];if(i)return function iterateeRearg(s,o){return overArg(s,(function(s){var i=o.length;return function baseArity(s,o){return 2==o?function(o,i){return s.apply(void 0,arguments)}:function(o){return s.apply(void 0,arguments)}}(we(baseAry(s,i),o),i)}))}(o,i);var u=!x&&a.iterateeAry[s];if(u)return function iterateeAry(s,o){return overArg(s,(function(s){return"function"==typeof s?baseAry(s,o):s}))}(o,u)}return o}function castFixed(s,o,i){if(B&&(Y||!a.skipFixed[s])){var u=a.methodSpread[s],w=u&&u.start;return void 0===w?ae(o,i):function flatSpread(s,o){return function(){for(var i=arguments.length,a=i-1,u=Array(i);i--;)u[i]=arguments[i];var w=u[o],x=u.slice(0,o);return w&&_.apply(x,w),o!=a&&_.apply(x,u.slice(o+1)),s.apply(this,x)}}(o,w)}return o}function castRearg(s,o,i){return V&&i>1&&(Z||!a.skipRearg[s])?we(o,a.methodRearg[s]||a.aryRearg[i]):o}function cloneByPath(s,o){for(var i=-1,a=(o=Pe(o)).length,u=a-1,_=le(Object(s)),w=_;null!=w&&++i1?pe(o,i):o}(0,u=castCap(_,u),s),!1}})),!u})),u||(u=w),u==o&&(u=U?pe(u,1):function(){return o.apply(this,arguments)}),u.convert=createConverter(_,o),u.placeholder=o.placeholder=i,u}if(!C)return wrap(o,i,z);var $e=i,qe=[];return de(Te,(function(s){de(a.aryMethod[s],(function(s){var o=$e[a.remap[s]||s];o&&qe.push([s,wrap(s,o,$e)])}))})),de(_e($e),(function(s){var o=$e[s];if("function"==typeof o){for(var i=qe.length;i--;)if(qe[i][0]==s)return;o.convert=createConverter(s,o),qe.push([s,o])}})),de(qe,(function(s){$e[s[0]]=s[1]})),$e.convert=function convertLib(s){return $e.runInContext.convert(s)(void 0)},$e.placeholder=$e,de(_e($e),(function(s){de(a.realToAlias[s]||[],(function(o){$e[o]=$e[s]}))})),$e}},16962(s,o){o.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"},o.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]},o.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]},o.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2},o.iterateeRearg={mapKeys:[1],reduceRight:[1,0]},o.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]},o.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}},o.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}},o.realToAlias=function(){var s=Object.prototype.hasOwnProperty,i=o.aliasToReal,a={};for(var u in i){var _=i[u];s.call(a,_)?a[_].push(u):a[_]=[u]}return a}(),o.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"},o.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0},o.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}},47934(s,o,i){s.exports={ary:i(64626),assign:i(74733),clone:i(32629),curry:i(49747),forEach:i(83729),isArray:i(56449),isError:i(23546),isFunction:i(1882),isWeakMap:i(47886),iteratee:i(33855),keys:i(88984),rearg:i(84195),toInteger:i(61489),toPath:i(42072)}},56367(s,o,i){s.exports=i(77731)},79920(s,o,i){var a=i(73424),u=i(47934);s.exports=function convert(s,o,i){return a(u,s,o,i)}},2874(s){s.exports={}},77731(s,o,i){var a=i(79920)("set",i(63560));a.placeholder=i(2874),s.exports=a},58156(s,o,i){var a=i(47422);s.exports=function get(s,o,i){var u=null==s?void 0:a(s,o);return void 0===u?i:u}},61448(s,o,i){var a=i(20426),u=i(49326);s.exports=function has(s,o){return null!=s&&u(s,o,a)}},80631(s,o,i){var a=i(28077),u=i(49326);s.exports=function hasIn(s,o){return null!=s&&u(s,o,a)}},83488(s){s.exports=function identity(s){return s}},72428(s,o,i){var a=i(27534),u=i(40346),_=Object.prototype,w=_.hasOwnProperty,x=_.propertyIsEnumerable,C=a(function(){return arguments}())?a:function(s){return u(s)&&w.call(s,"callee")&&!x.call(s,"callee")};s.exports=C},56449(s){var o=Array.isArray;s.exports=o},64894(s,o,i){var a=i(1882),u=i(30294);s.exports=function isArrayLike(s){return null!=s&&u(s.length)&&!a(s)}},83693(s,o,i){var a=i(64894),u=i(40346);s.exports=function isArrayLikeObject(s){return u(s)&&a(s)}},53812(s,o,i){var a=i(72552),u=i(40346);s.exports=function isBoolean(s){return!0===s||!1===s||u(s)&&"[object Boolean]"==a(s)}},3656(s,o,i){s=i.nmd(s);var a=i(9325),u=i(89935),_=o&&!o.nodeType&&o,w=_&&s&&!s.nodeType&&s,x=w&&w.exports===_?a.Buffer:void 0,C=(x?x.isBuffer:void 0)||u;s.exports=C},62193(s,o,i){var a=i(88984),u=i(5861),_=i(72428),w=i(56449),x=i(64894),C=i(3656),j=i(55527),L=i(37167),B=Object.prototype.hasOwnProperty;s.exports=function isEmpty(s){if(null==s)return!0;if(x(s)&&(w(s)||"string"==typeof s||"function"==typeof s.splice||C(s)||L(s)||_(s)))return!s.length;var o=u(s);if("[object Map]"==o||"[object Set]"==o)return!s.size;if(j(s))return!a(s).length;for(var i in s)if(B.call(s,i))return!1;return!0}},2404(s,o,i){var a=i(60270);s.exports=function isEqual(s,o){return a(s,o)}},23546(s,o,i){var a=i(72552),u=i(40346),_=i(11331);s.exports=function isError(s){if(!u(s))return!1;var o=a(s);return"[object Error]"==o||"[object DOMException]"==o||"string"==typeof s.message&&"string"==typeof s.name&&!_(s)}},1882(s,o,i){var a=i(72552),u=i(23805);s.exports=function isFunction(s){if(!u(s))return!1;var o=a(s);return"[object Function]"==o||"[object GeneratorFunction]"==o||"[object AsyncFunction]"==o||"[object Proxy]"==o}},30294(s){s.exports=function isLength(s){return"number"==typeof s&&s>-1&&s%1==0&&s<=9007199254740991}},87730(s,o,i){var a=i(29172),u=i(27301),_=i(86009),w=_&&_.isMap,x=w?u(w):a;s.exports=x},5187(s){s.exports=function isNull(s){return null===s}},98023(s,o,i){var a=i(72552),u=i(40346);s.exports=function isNumber(s){return"number"==typeof s||u(s)&&"[object Number]"==a(s)}},23805(s){s.exports=function isObject(s){var o=typeof s;return null!=s&&("object"==o||"function"==o)}},40346(s){s.exports=function isObjectLike(s){return null!=s&&"object"==typeof s}},11331(s,o,i){var a=i(72552),u=i(28879),_=i(40346),w=Function.prototype,x=Object.prototype,C=w.toString,j=x.hasOwnProperty,L=C.call(Object);s.exports=function isPlainObject(s){if(!_(s)||"[object Object]"!=a(s))return!1;var o=u(s);if(null===o)return!0;var i=j.call(o,"constructor")&&o.constructor;return"function"==typeof i&&i instanceof i&&C.call(i)==L}},38440(s,o,i){var a=i(16038),u=i(27301),_=i(86009),w=_&&_.isSet,x=w?u(w):a;s.exports=x},85015(s,o,i){var a=i(72552),u=i(56449),_=i(40346);s.exports=function isString(s){return"string"==typeof s||!u(s)&&_(s)&&"[object String]"==a(s)}},44394(s,o,i){var a=i(72552),u=i(40346);s.exports=function isSymbol(s){return"symbol"==typeof s||u(s)&&"[object Symbol]"==a(s)}},37167(s,o,i){var a=i(4901),u=i(27301),_=i(86009),w=_&&_.isTypedArray,x=w?u(w):a;s.exports=x},47886(s,o,i){var a=i(5861),u=i(40346);s.exports=function isWeakMap(s){return u(s)&&"[object WeakMap]"==a(s)}},33855(s,o,i){var a=i(9999),u=i(15389);s.exports=function iteratee(s){return u("function"==typeof s?s:a(s,1))}},95950(s,o,i){var a=i(70695),u=i(88984),_=i(64894);s.exports=function keys(s){return _(s)?a(s):u(s)}},37241(s,o,i){var a=i(70695),u=i(72903),_=i(64894);s.exports=function keysIn(s){return _(s)?a(s,!0):u(s)}},68090(s){s.exports=function last(s){var o=null==s?0:s.length;return o?s[o-1]:void 0}},50104(s,o,i){var a=i(53661);function memoize(s,o){if("function"!=typeof s||null!=o&&"function"!=typeof o)throw new TypeError("Expected a function");var memoized=function(){var i=arguments,a=o?o.apply(this,i):i[0],u=memoized.cache;if(u.has(a))return u.get(a);var _=s.apply(this,i);return memoized.cache=u.set(a,_)||u,_};return memoized.cache=new(memoize.Cache||a),memoized}memoize.Cache=a,s.exports=memoize},55364(s,o,i){var a=i(85250),u=i(20999)((function(s,o,i){a(s,o,i)}));s.exports=u},6048(s){s.exports=function negate(s){if("function"!=typeof s)throw new TypeError("Expected a function");return function(){var o=arguments;switch(o.length){case 0:return!s.call(this);case 1:return!s.call(this,o[0]);case 2:return!s.call(this,o[0],o[1]);case 3:return!s.call(this,o[0],o[1],o[2])}return!s.apply(this,o)}}},63950(s){s.exports=function noop(){}},10124(s,o,i){var a=i(9325);s.exports=function(){return a.Date.now()}},90179(s,o,i){var a=i(34932),u=i(9999),_=i(19931),w=i(31769),x=i(21791),C=i(53138),j=i(38816),L=i(83349),B=j((function(s,o){var i={};if(null==s)return i;var j=!1;o=a(o,(function(o){return o=w(o,s),j||(j=o.length>1),o})),x(s,L(s),i),j&&(i=u(i,7,C));for(var B=o.length;B--;)_(i,o[B]);return i}));s.exports=B},50583(s,o,i){var a=i(47237),u=i(17255),_=i(28586),w=i(77797);s.exports=function property(s){return _(s)?a(w(s)):u(s)}},84195(s,o,i){var a=i(66977),u=i(38816),_=u((function(s,o){return a(s,256,void 0,void 0,void 0,o)}));s.exports=_},40860(s,o,i){var a=i(40882),u=i(80909),_=i(15389),w=i(85558),x=i(56449);s.exports=function reduce(s,o,i){var C=x(s)?a:w,j=arguments.length<3;return C(s,_(o,4),i,j,u)}},63560(s,o,i){var a=i(73170);s.exports=function set(s,o,i){return null==s?s:a(s,o,i)}},42426(s,o,i){var a=i(14248),u=i(15389),_=i(90916),w=i(56449),x=i(36800);s.exports=function some(s,o,i){var C=w(s)?a:_;return i&&x(s,o,i)&&(o=void 0),C(s,u(o,3))}},63345(s){s.exports=function stubArray(){return[]}},89935(s){s.exports=function stubFalse(){return!1}},17400(s,o,i){var a=i(99374),u=1/0;s.exports=function toFinite(s){return s?(s=a(s))===u||s===-1/0?17976931348623157e292*(s<0?-1:1):s==s?s:0:0===s?s:0}},61489(s,o,i){var a=i(17400);s.exports=function toInteger(s){var o=a(s),i=o%1;return o==o?i?o-i:o:0}},80218(s,o,i){var a=i(13222);s.exports=function toLower(s){return a(s).toLowerCase()}},99374(s,o,i){var a=i(54128),u=i(23805),_=i(44394),w=/^[-+]0x[0-9a-f]+$/i,x=/^0b[01]+$/i,C=/^0o[0-7]+$/i,j=parseInt;s.exports=function toNumber(s){if("number"==typeof s)return s;if(_(s))return NaN;if(u(s)){var o="function"==typeof s.valueOf?s.valueOf():s;s=u(o)?o+"":o}if("string"!=typeof s)return 0===s?s:+s;s=a(s);var i=x.test(s);return i||C.test(s)?j(s.slice(2),i?2:8):w.test(s)?NaN:+s}},42072(s,o,i){var a=i(34932),u=i(23007),_=i(56449),w=i(44394),x=i(61802),C=i(77797),j=i(13222);s.exports=function toPath(s){return _(s)?a(s,C):w(s)?[s]:u(x(j(s)))}},69884(s,o,i){var a=i(21791),u=i(37241);s.exports=function toPlainObject(s){return a(s,u(s))}},13222(s,o,i){var a=i(77556);s.exports=function toString(s){return null==s?"":a(s)}},55808(s,o,i){var a=i(12507)("toUpperCase");s.exports=a},66645(s,o,i){var a=i(1733),u=i(45434),_=i(13222),w=i(22225);s.exports=function words(s,o,i){return s=_(s),void 0===(o=i?void 0:o)?u(s)?w(s):a(s):s.match(o)||[]}},53758(s,o,i){var a=i(30980),u=i(56017),_=i(94033),w=i(56449),x=i(40346),C=i(80257),j=Object.prototype.hasOwnProperty;function lodash(s){if(x(s)&&!w(s)&&!(s instanceof a)){if(s instanceof u)return s;if(j.call(s,"__wrapped__"))return C(s)}return new u(s)}lodash.prototype=_.prototype,lodash.prototype.constructor=lodash,s.exports=lodash},47248(s,o,i){var a=i(16547),u=i(51234);s.exports=function zipObject(s,o){return u(s||[],o||[],a)}},43768(s,o,i){"use strict";var a=i(45981),u=i(85587);o.highlight=highlight,o.highlightAuto=function highlightAuto(s,o){var i,w,x,C,j=o||{},L=j.subset||a.listLanguages(),B=j.prefix,$=L.length,V=-1;null==B&&(B=_);if("string"!=typeof s)throw u("Expected `string` for value, got `%s`",s);w={relevance:0,language:null,value:[]},i={relevance:0,language:null,value:[]};for(;++V<$;)C=L[V],a.getLanguage(C)&&((x=highlight(C,s,o)).language=C,x.relevance>w.relevance&&(w=x),x.relevance>i.relevance&&(w=i,i=x));w.language&&(i.secondBest=w);return i},o.registerLanguage=function registerLanguage(s,o){a.registerLanguage(s,o)},o.listLanguages=function listLanguages(){return a.listLanguages()},o.registerAlias=function registerAlias(s,o){var i,u=s;o&&((u={})[s]=o);for(i in u)a.registerAliases(u[i],{languageName:i})},Emitter.prototype.addText=function text(s){var o,i,a=this.stack;if(""===s)return;o=a[a.length-1],(i=o.children[o.children.length-1])&&"text"===i.type?i.value+=s:o.children.push({type:"text",value:s})},Emitter.prototype.addKeyword=function addKeyword(s,o){this.openNode(o),this.addText(s),this.closeNode()},Emitter.prototype.addSublanguage=function addSublanguage(s,o){var i=this.stack,a=i[i.length-1],u=s.rootNode.children,_=o?{type:"element",tagName:"span",properties:{className:[o]},children:u}:u;a.children=a.children.concat(_)},Emitter.prototype.openNode=function open(s){var o=this.stack,i=this.options.classPrefix+s,a=o[o.length-1],u={type:"element",tagName:"span",properties:{className:[i]},children:[]};a.children.push(u),o.push(u)},Emitter.prototype.closeNode=function close(){this.stack.pop()},Emitter.prototype.closeAllNodes=noop,Emitter.prototype.finalize=noop,Emitter.prototype.toHTML=function toHtmlNoop(){return""};var _="hljs-";function highlight(s,o,i){var w,x=a.configure({}),C=(i||{}).prefix;if("string"!=typeof s)throw u("Expected `string` for name, got `%s`",s);if(!a.getLanguage(s))throw u("Unknown language: `%s` is not registered",s);if("string"!=typeof o)throw u("Expected `string` for value, got `%s`",o);if(null==C&&(C=_),a.configure({__emitter:Emitter,classPrefix:C}),w=a.highlight(o,{language:s,ignoreIllegals:!0}),a.configure(x||{}),w.errorRaised)throw w.errorRaised;return{relevance:w.relevance,language:w.language,value:w.emitter.rootNode.children}}function Emitter(s){this.options=s,this.rootNode={children:[]},this.stack=[this.rootNode]}function noop(){}},71514(s){"use strict";s.exports=Math.abs},58968(s){"use strict";s.exports=Math.floor},94459(s){"use strict";s.exports=Number.isNaN||function isNaN(s){return s!=s}},6188(s){"use strict";s.exports=Math.max},68002(s){"use strict";s.exports=Math.min},75880(s){"use strict";s.exports=Math.pow},70414(s){"use strict";s.exports=Math.round},73093(s,o,i){"use strict";var a=i(94459);s.exports=function sign(s){return a(s)||0===s?s:s<0?-1:1}},92340(s,o,i){const a=i(6048);function coerceElementMatchingCallback(s){return"string"==typeof s?o=>o.element===s:s.constructor&&s.extend?o=>o instanceof s:s}class ArraySlice{constructor(s){this.elements=s||[]}toValue(){return this.elements.map((s=>s.toValue()))}map(s,o){return this.elements.map(s,o)}flatMap(s,o){return this.map(s,o).reduce(((s,o)=>s.concat(o)),[])}compactMap(s,o){const i=[];return this.forEach((a=>{const u=s.bind(o)(a);u&&i.push(u)})),i}filter(s,o){return s=coerceElementMatchingCallback(s),new ArraySlice(this.elements.filter(s,o))}reject(s,o){return s=coerceElementMatchingCallback(s),new ArraySlice(this.elements.filter(a(s),o))}find(s,o){return s=coerceElementMatchingCallback(s),this.elements.find(s,o)}forEach(s,o){this.elements.forEach(s,o)}reduce(s,o){return this.elements.reduce(s,o)}includes(s){return this.elements.some((o=>o.equals(s)))}shift(){return this.elements.shift()}unshift(s){this.elements.unshift(this.refract(s))}push(s){return this.elements.push(this.refract(s)),this}add(s){this.push(s)}get(s){return this.elements[s]}getValue(s){const o=this.elements[s];if(o)return o.toValue()}get length(){return this.elements.length}get isEmpty(){return 0===this.elements.length}get first(){return this.elements[0]}}"undefined"!=typeof Symbol&&(ArraySlice.prototype[Symbol.iterator]=function symbol(){return this.elements[Symbol.iterator]()}),s.exports=ArraySlice},55973(s){class KeyValuePair{constructor(s,o){this.key=s,this.value=o}clone(){const s=new KeyValuePair;return this.key&&(s.key=this.key.clone()),this.value&&(s.value=this.value.clone()),s}}s.exports=KeyValuePair},3110(s,o,i){const a=i(5187),u=i(85015),_=i(98023),w=i(53812),x=i(23805),C=i(85105),j=i(86804);class Namespace{constructor(s){this.elementMap={},this.elementDetection=[],this.Element=j.Element,this.KeyValuePair=j.KeyValuePair,s&&s.noDefault||this.useDefault(),this._attributeElementKeys=[],this._attributeElementArrayKeys=[]}use(s){return s.namespace&&s.namespace({base:this}),s.load&&s.load({base:this}),this}useDefault(){return this.register("null",j.NullElement).register("string",j.StringElement).register("number",j.NumberElement).register("boolean",j.BooleanElement).register("array",j.ArrayElement).register("object",j.ObjectElement).register("member",j.MemberElement).register("ref",j.RefElement).register("link",j.LinkElement),this.detect(a,j.NullElement,!1).detect(u,j.StringElement,!1).detect(_,j.NumberElement,!1).detect(w,j.BooleanElement,!1).detect(Array.isArray,j.ArrayElement,!1).detect(x,j.ObjectElement,!1),this}register(s,o){return this._elements=void 0,this.elementMap[s]=o,this}unregister(s){return this._elements=void 0,delete this.elementMap[s],this}detect(s,o,i){return void 0===i||i?this.elementDetection.unshift([s,o]):this.elementDetection.push([s,o]),this}toElement(s){if(s instanceof this.Element)return s;let o;for(let i=0;i{const o=s[0].toUpperCase()+s.substr(1);this._elements[o]=this.elementMap[s]}))),this._elements}get serialiser(){return new C(this)}}C.prototype.Namespace=Namespace,s.exports=Namespace},10866(s,o,i){const a=i(6048),u=i(92340);class ObjectSlice extends u{map(s,o){return this.elements.map((i=>s.bind(o)(i.value,i.key,i)))}filter(s,o){return new ObjectSlice(this.elements.filter((i=>s.bind(o)(i.value,i.key,i))))}reject(s,o){return this.filter(a(s.bind(o)))}forEach(s,o){return this.elements.forEach(((i,a)=>{s.bind(o)(i.value,i.key,i,a)}))}keys(){return this.map(((s,o)=>o.toValue()))}values(){return this.map((s=>s.toValue()))}}s.exports=ObjectSlice},86804(s,o,i){const a=i(10316),u=i(41067),_=i(71167),w=i(40239),x=i(12242),C=i(6233),j=i(87726),L=i(61045),B=i(86303),$=i(14540),V=i(92340),z=i(10866),U=i(55973);function refract(s){if(s instanceof a)return s;if("string"==typeof s)return new _(s);if("number"==typeof s)return new w(s);if("boolean"==typeof s)return new x(s);if(null===s)return new u;if(Array.isArray(s))return new C(s.map(refract));if("object"==typeof s){return new L(s)}return s}a.prototype.ObjectElement=L,a.prototype.RefElement=$,a.prototype.MemberElement=j,a.prototype.refract=refract,V.prototype.refract=refract,s.exports={Element:a,NullElement:u,StringElement:_,NumberElement:w,BooleanElement:x,ArrayElement:C,MemberElement:j,ObjectElement:L,LinkElement:B,RefElement:$,refract,ArraySlice:V,ObjectSlice:z,KeyValuePair:U}},86303(s,o,i){const a=i(10316);s.exports=class LinkElement extends a{constructor(s,o,i){super(s||[],o,i),this.element="link"}get relation(){return this.attributes.get("relation")}set relation(s){this.attributes.set("relation",s)}get href(){return this.attributes.get("href")}set href(s){this.attributes.set("href",s)}}},14540(s,o,i){const a=i(10316);s.exports=class RefElement extends a{constructor(s,o,i){super(s||[],o,i),this.element="ref",this.path||(this.path="element")}get path(){return this.attributes.get("path")}set path(s){this.attributes.set("path",s)}}},34035(s,o,i){const a=i(3110),u=i(86804);o.g$=a,o.KeyValuePair=i(55973),o.G6=u.ArraySlice,o.ot=u.ObjectSlice,o.Hg=u.Element,o.Om=u.StringElement,o.kT=u.NumberElement,o.bd=u.BooleanElement,o.Os=u.NullElement,o.wE=u.ArrayElement,o.Sh=u.ObjectElement,o.Pr=u.MemberElement,o.sI=u.RefElement,o.Ft=u.LinkElement,o.e=u.refract,i(85105),i(75147)},6233(s,o,i){const a=i(6048),u=i(10316),_=i(92340);class ArrayElement extends u{constructor(s,o,i){super(s||[],o,i),this.element="array"}primitive(){return"array"}get(s){return this.content[s]}getValue(s){const o=this.get(s);if(o)return o.toValue()}getIndex(s){return this.content[s]}set(s,o){return this.content[s]=this.refract(o),this}remove(s){const o=this.content.splice(s,1);return o.length?o[0]:null}map(s,o){return this.content.map(s,o)}flatMap(s,o){return this.map(s,o).reduce(((s,o)=>s.concat(o)),[])}compactMap(s,o){const i=[];return this.forEach((a=>{const u=s.bind(o)(a);u&&i.push(u)})),i}filter(s,o){return new _(this.content.filter(s,o))}reject(s,o){return this.filter(a(s),o)}reduce(s,o){let i,a;void 0!==o?(i=0,a=this.refract(o)):(i=1,a="object"===this.primitive()?this.first.value:this.first);for(let o=i;o{s.bind(o)(i,this.refract(a))}))}shift(){return this.content.shift()}unshift(s){this.content.unshift(this.refract(s))}push(s){return this.content.push(this.refract(s)),this}add(s){this.push(s)}findElements(s,o){const i=o||{},a=!!i.recursive,u=void 0===i.results?[]:i.results;return this.forEach(((o,i,_)=>{a&&void 0!==o.findElements&&o.findElements(s,{results:u,recursive:a}),s(o,i,_)&&u.push(o)})),u}find(s){return new _(this.findElements(s,{recursive:!0}))}findByElement(s){return this.find((o=>o.element===s))}findByClass(s){return this.find((o=>o.classes.includes(s)))}getById(s){return this.find((o=>o.id.toValue()===s)).first}includes(s){return this.content.some((o=>o.equals(s)))}contains(s){return this.includes(s)}empty(){return new this.constructor([])}"fantasy-land/empty"(){return this.empty()}concat(s){return new this.constructor(this.content.concat(s.content))}"fantasy-land/concat"(s){return this.concat(s)}"fantasy-land/map"(s){return new this.constructor(this.map(s))}"fantasy-land/chain"(s){return this.map((o=>s(o)),this).reduce(((s,o)=>s.concat(o)),this.empty())}"fantasy-land/filter"(s){return new this.constructor(this.content.filter(s))}"fantasy-land/reduce"(s,o){return this.content.reduce(s,o)}get length(){return this.content.length}get isEmpty(){return 0===this.content.length}get first(){return this.getIndex(0)}get second(){return this.getIndex(1)}get last(){return this.getIndex(this.length-1)}}ArrayElement.empty=function empty(){return new this},ArrayElement["fantasy-land/empty"]=ArrayElement.empty,"undefined"!=typeof Symbol&&(ArrayElement.prototype[Symbol.iterator]=function symbol(){return this.content[Symbol.iterator]()}),s.exports=ArrayElement},12242(s,o,i){const a=i(10316);s.exports=class BooleanElement extends a{constructor(s,o,i){super(s,o,i),this.element="boolean"}primitive(){return"boolean"}}},10316(s,o,i){const a=i(2404),u=i(55973),_=i(92340);class Element{constructor(s,o,i){o&&(this.meta=o),i&&(this.attributes=i),this.content=s}freeze(){Object.isFrozen(this)||(this._meta&&(this.meta.parent=this,this.meta.freeze()),this._attributes&&(this.attributes.parent=this,this.attributes.freeze()),this.children.forEach((s=>{s.parent=this,s.freeze()}),this),this.content&&Array.isArray(this.content)&&Object.freeze(this.content),Object.freeze(this))}primitive(){}clone(){const s=new this.constructor;return s.element=this.element,this.meta.length&&(s._meta=this.meta.clone()),this.attributes.length&&(s._attributes=this.attributes.clone()),this.content?this.content.clone?s.content=this.content.clone():Array.isArray(this.content)?s.content=this.content.map((s=>s.clone())):s.content=this.content:s.content=this.content,s}toValue(){return this.content instanceof Element?this.content.toValue():this.content instanceof u?{key:this.content.key.toValue(),value:this.content.value?this.content.value.toValue():void 0}:this.content&&this.content.map?this.content.map((s=>s.toValue()),this):this.content}toRef(s){if(""===this.id.toValue())throw Error("Cannot create reference to an element that does not contain an ID");const o=new this.RefElement(this.id.toValue());return s&&(o.path=s),o}findRecursive(...s){if(arguments.length>1&&!this.isFrozen)throw new Error("Cannot find recursive with multiple element names without first freezing the element. Call `element.freeze()`");const o=s.pop();let i=new _;const append=(s,o)=>(s.push(o),s),checkElement=(s,i)=>{i.element===o&&s.push(i);const a=i.findRecursive(o);return a&&a.reduce(append,s),i.content instanceof u&&(i.content.key&&checkElement(s,i.content.key),i.content.value&&checkElement(s,i.content.value)),s};return this.content&&(this.content.element&&checkElement(i,this.content),Array.isArray(this.content)&&this.content.reduce(checkElement,i)),s.isEmpty||(i=i.filter((o=>{let i=o.parents.map((s=>s.element));for(const o in s){const a=s[o],u=i.indexOf(a);if(-1===u)return!1;i=i.splice(0,u)}return!0}))),i}set(s){return this.content=s,this}equals(s){return a(this.toValue(),s)}getMetaProperty(s,o){if(!this.meta.hasKey(s)){if(this.isFrozen){const s=this.refract(o);return s.freeze(),s}this.meta.set(s,o)}return this.meta.get(s)}setMetaProperty(s,o){this.meta.set(s,o)}get element(){return this._storedElement||"element"}set element(s){this._storedElement=s}get content(){return this._content}set content(s){if(s instanceof Element)this._content=s;else if(s instanceof _)this.content=s.elements;else if("string"==typeof s||"number"==typeof s||"boolean"==typeof s||"null"===s||null==s)this._content=s;else if(s instanceof u)this._content=s;else if(Array.isArray(s))this._content=s.map(this.refract);else{if("object"!=typeof s)throw new Error("Cannot set content to given value");this._content=Object.keys(s).map((o=>new this.MemberElement(o,s[o])))}}get meta(){if(!this._meta){if(this.isFrozen){const s=new this.ObjectElement;return s.freeze(),s}this._meta=new this.ObjectElement}return this._meta}set meta(s){s instanceof this.ObjectElement?this._meta=s:this.meta.set(s||{})}get attributes(){if(!this._attributes){if(this.isFrozen){const s=new this.ObjectElement;return s.freeze(),s}this._attributes=new this.ObjectElement}return this._attributes}set attributes(s){s instanceof this.ObjectElement?this._attributes=s:this.attributes.set(s||{})}get id(){return this.getMetaProperty("id","")}set id(s){this.setMetaProperty("id",s)}get classes(){return this.getMetaProperty("classes",[])}set classes(s){this.setMetaProperty("classes",s)}get title(){return this.getMetaProperty("title","")}set title(s){this.setMetaProperty("title",s)}get description(){return this.getMetaProperty("description","")}set description(s){this.setMetaProperty("description",s)}get links(){return this.getMetaProperty("links",[])}set links(s){this.setMetaProperty("links",s)}get isFrozen(){return Object.isFrozen(this)}get parents(){let{parent:s}=this;const o=new _;for(;s;)o.push(s),s=s.parent;return o}get children(){if(Array.isArray(this.content))return new _(this.content);if(this.content instanceof u){const s=new _([this.content.key]);return this.content.value&&s.push(this.content.value),s}return this.content instanceof Element?new _([this.content]):new _}get recursiveChildren(){const s=new _;return this.children.forEach((o=>{s.push(o),o.recursiveChildren.forEach((o=>{s.push(o)}))})),s}}s.exports=Element},87726(s,o,i){const a=i(55973),u=i(10316);s.exports=class MemberElement extends u{constructor(s,o,i,u){super(new a,i,u),this.element="member",this.key=s,this.value=o}get key(){return this.content.key}set key(s){this.content.key=this.refract(s)}get value(){return this.content.value}set value(s){this.content.value=this.refract(s)}}},41067(s,o,i){const a=i(10316);s.exports=class NullElement extends a{constructor(s,o,i){super(s||null,o,i),this.element="null"}primitive(){return"null"}set(){return new Error("Cannot set the value of null")}}},40239(s,o,i){const a=i(10316);s.exports=class NumberElement extends a{constructor(s,o,i){super(s,o,i),this.element="number"}primitive(){return"number"}}},61045(s,o,i){const a=i(6048),u=i(23805),_=i(6233),w=i(87726),x=i(10866);s.exports=class ObjectElement extends _{constructor(s,o,i){super(s||[],o,i),this.element="object"}primitive(){return"object"}toValue(){return this.content.reduce(((s,o)=>(s[o.key.toValue()]=o.value?o.value.toValue():void 0,s)),{})}get(s){const o=this.getMember(s);if(o)return o.value}getMember(s){if(void 0!==s)return this.content.find((o=>o.key.toValue()===s))}remove(s){let o=null;return this.content=this.content.filter((i=>i.key.toValue()!==s||(o=i,!1))),o}getKey(s){const o=this.getMember(s);if(o)return o.key}set(s,o){if(u(s))return Object.keys(s).forEach((o=>{this.set(o,s[o])})),this;const i=s,a=this.getMember(i);return a?a.value=o:this.content.push(new w(i,o)),this}keys(){return this.content.map((s=>s.key.toValue()))}values(){return this.content.map((s=>s.value.toValue()))}hasKey(s){return this.content.some((o=>o.key.equals(s)))}items(){return this.content.map((s=>[s.key.toValue(),s.value.toValue()]))}map(s,o){return this.content.map((i=>s.bind(o)(i.value,i.key,i)))}compactMap(s,o){const i=[];return this.forEach(((a,u,_)=>{const w=s.bind(o)(a,u,_);w&&i.push(w)})),i}filter(s,o){return new x(this.content).filter(s,o)}reject(s,o){return this.filter(a(s),o)}forEach(s,o){return this.content.forEach((i=>s.bind(o)(i.value,i.key,i)))}}},71167(s,o,i){const a=i(10316);s.exports=class StringElement extends a{constructor(s,o,i){super(s,o,i),this.element="string"}primitive(){return"string"}get length(){return this.content.length}}},75147(s,o,i){const a=i(85105);s.exports=class JSON06Serialiser extends a{serialise(s){if(!(s instanceof this.namespace.elements.Element))throw new TypeError(`Given element \`${s}\` is not an Element instance`);let o;s._attributes&&s.attributes.get("variable")&&(o=s.attributes.get("variable"));const i={element:s.element};s._meta&&s._meta.length>0&&(i.meta=this.serialiseObject(s.meta));const a="enum"===s.element||-1!==s.attributes.keys().indexOf("enumerations");if(a){const o=this.enumSerialiseAttributes(s);o&&(i.attributes=o)}else if(s._attributes&&s._attributes.length>0){let{attributes:a}=s;a.get("metadata")&&(a=a.clone(),a.set("meta",a.get("metadata")),a.remove("metadata")),"member"===s.element&&o&&(a=a.clone(),a.remove("variable")),a.length>0&&(i.attributes=this.serialiseObject(a))}if(a)i.content=this.enumSerialiseContent(s,i);else if(this[`${s.element}SerialiseContent`])i.content=this[`${s.element}SerialiseContent`](s,i);else if(void 0!==s.content){let a;o&&s.content.key?(a=s.content.clone(),a.key.attributes.set("variable",o),a=this.serialiseContent(a)):a=this.serialiseContent(s.content),this.shouldSerialiseContent(s,a)&&(i.content=a)}else this.shouldSerialiseContent(s,s.content)&&s instanceof this.namespace.elements.Array&&(i.content=[]);return i}shouldSerialiseContent(s,o){return"parseResult"===s.element||"httpRequest"===s.element||"httpResponse"===s.element||"category"===s.element||"link"===s.element||void 0!==o&&(!Array.isArray(o)||0!==o.length)}refSerialiseContent(s,o){return delete o.attributes,{href:s.toValue(),path:s.path.toValue()}}sourceMapSerialiseContent(s){return s.toValue()}dataStructureSerialiseContent(s){return[this.serialiseContent(s.content)]}enumSerialiseAttributes(s){const o=s.attributes.clone(),i=o.remove("enumerations")||new this.namespace.elements.Array([]),a=o.get("default");let u=o.get("samples")||new this.namespace.elements.Array([]);if(a&&a.content&&(a.content.attributes&&a.content.attributes.remove("typeAttributes"),o.set("default",new this.namespace.elements.Array([a.content]))),u.forEach((s=>{s.content&&s.content.element&&s.content.attributes.remove("typeAttributes")})),s.content&&0!==i.length&&u.unshift(s.content),u=u.map((s=>s instanceof this.namespace.elements.Array?[s]:new this.namespace.elements.Array([s.content]))),u.length&&o.set("samples",u),o.length>0)return this.serialiseObject(o)}enumSerialiseContent(s){if(s._attributes){const o=s.attributes.get("enumerations");if(o&&o.length>0)return o.content.map((s=>{const o=s.clone();return o.attributes.remove("typeAttributes"),this.serialise(o)}))}if(s.content){const o=s.content.clone();return o.attributes.remove("typeAttributes"),[this.serialise(o)]}return[]}deserialise(s){if("string"==typeof s)return new this.namespace.elements.String(s);if("number"==typeof s)return new this.namespace.elements.Number(s);if("boolean"==typeof s)return new this.namespace.elements.Boolean(s);if(null===s)return new this.namespace.elements.Null;if(Array.isArray(s))return new this.namespace.elements.Array(s.map(this.deserialise,this));const o=this.namespace.getElementClass(s.element),i=new o;i.element!==s.element&&(i.element=s.element),s.meta&&this.deserialiseObject(s.meta,i.meta),s.attributes&&this.deserialiseObject(s.attributes,i.attributes);const a=this.deserialiseContent(s.content);if(void 0===a&&null!==i.content||(i.content=a),"enum"===i.element){i.content&&i.attributes.set("enumerations",i.content);let s=i.attributes.get("samples");if(i.attributes.remove("samples"),s){const a=s;s=new this.namespace.elements.Array,a.forEach((a=>{a.forEach((a=>{const u=new o(a);u.element=i.element,s.push(u)}))}));const u=s.shift();i.content=u?u.content:void 0,i.attributes.set("samples",s)}else i.content=void 0;let a=i.attributes.get("default");if(a&&a.length>0){a=a.get(0);const s=new o(a);s.element=i.element,i.attributes.set("default",s)}}else if("dataStructure"===i.element&&Array.isArray(i.content))[i.content]=i.content;else if("category"===i.element){const s=i.attributes.get("meta");s&&(i.attributes.set("metadata",s),i.attributes.remove("meta"))}else"member"===i.element&&i.key&&i.key._attributes&&i.key._attributes.getValue("variable")&&(i.attributes.set("variable",i.key.attributes.get("variable")),i.key.attributes.remove("variable"));return i}serialiseContent(s){if(s instanceof this.namespace.elements.Element)return this.serialise(s);if(s instanceof this.namespace.KeyValuePair){const o={key:this.serialise(s.key)};return s.value&&(o.value=this.serialise(s.value)),o}return s&&s.map?s.map(this.serialise,this):s}deserialiseContent(s){if(s){if(s.element)return this.deserialise(s);if(s.key){const o=new this.namespace.KeyValuePair(this.deserialise(s.key));return s.value&&(o.value=this.deserialise(s.value)),o}if(s.map)return s.map(this.deserialise,this)}return s}shouldRefract(s){return!!(s._attributes&&s.attributes.keys().length||s._meta&&s.meta.keys().length)||"enum"!==s.element&&(s.element!==s.primitive()||"member"===s.element)}convertKeyToRefract(s,o){return this.shouldRefract(o)?this.serialise(o):"enum"===o.element?this.serialiseEnum(o):"array"===o.element?o.map((o=>this.shouldRefract(o)||"default"===s?this.serialise(o):"array"===o.element||"object"===o.element||"enum"===o.element?o.children.map((s=>this.serialise(s))):o.toValue())):"object"===o.element?(o.content||[]).map(this.serialise,this):o.toValue()}serialiseEnum(s){return s.children.map((s=>this.serialise(s)))}serialiseObject(s){const o={};return s.forEach(((s,i)=>{if(s){const a=i.toValue();o[a]=this.convertKeyToRefract(a,s)}})),o}deserialiseObject(s,o){Object.keys(s).forEach((i=>{o.set(i,this.deserialise(s[i]))}))}}},85105(s){s.exports=class JSONSerialiser{constructor(s){this.namespace=s||new this.Namespace}serialise(s){if(!(s instanceof this.namespace.elements.Element))throw new TypeError(`Given element \`${s}\` is not an Element instance`);const o={element:s.element};s._meta&&s._meta.length>0&&(o.meta=this.serialiseObject(s.meta)),s._attributes&&s._attributes.length>0&&(o.attributes=this.serialiseObject(s.attributes));const i=this.serialiseContent(s.content);return void 0!==i&&(o.content=i),o}deserialise(s){if(!s.element)throw new Error("Given value is not an object containing an element name");const o=new(this.namespace.getElementClass(s.element));o.element!==s.element&&(o.element=s.element),s.meta&&this.deserialiseObject(s.meta,o.meta),s.attributes&&this.deserialiseObject(s.attributes,o.attributes);const i=this.deserialiseContent(s.content);return void 0===i&&null!==o.content||(o.content=i),o}serialiseContent(s){if(s instanceof this.namespace.elements.Element)return this.serialise(s);if(s instanceof this.namespace.KeyValuePair){const o={key:this.serialise(s.key)};return s.value&&(o.value=this.serialise(s.value)),o}if(s&&s.map){if(0===s.length)return;return s.map(this.serialise,this)}return s}deserialiseContent(s){if(s){if(s.element)return this.deserialise(s);if(s.key){const o=new this.namespace.KeyValuePair(this.deserialise(s.key));return s.value&&(o.value=this.deserialise(s.value)),o}if(s.map)return s.map(this.deserialise,this)}return s}serialiseObject(s){const o={};if(s.forEach(((s,i)=>{s&&(o[i.toValue()]=this.serialise(s))})),0!==Object.keys(o).length)return o}deserialiseObject(s,o){Object.keys(s).forEach((i=>{o.set(i,this.deserialise(s[i]))}))}}},76578(s){"use strict";s.exports=["Float16Array","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array"]},65606(s){var o,i,a=s.exports={};function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}function runTimeout(s){if(o===setTimeout)return setTimeout(s,0);if((o===defaultSetTimout||!o)&&setTimeout)return o=setTimeout,setTimeout(s,0);try{return o(s,0)}catch(i){try{return o.call(null,s,0)}catch(i){return o.call(this,s,0)}}}!function(){try{o="function"==typeof setTimeout?setTimeout:defaultSetTimout}catch(s){o=defaultSetTimout}try{i="function"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(s){i=defaultClearTimeout}}();var u,_=[],w=!1,x=-1;function cleanUpNextTick(){w&&u&&(w=!1,u.length?_=u.concat(_):x=-1,_.length&&drainQueue())}function drainQueue(){if(!w){var s=runTimeout(cleanUpNextTick);w=!0;for(var o=_.length;o;){for(u=_,_=[];++x1)for(var i=1;i_)throw new RangeError("requested too many random bytes");var i=w.allocUnsafe(s);if(s>0)if(s>u)for(var C=0;C=0||(u[i]=s[i]);return u}(s,o);if(Object.getOwnPropertySymbols){var _=Object.getOwnPropertySymbols(s);for(a=0;a<_.length;a++)i=_[a],o.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(s,i)&&(u[i]=s[i])}return u}function ownKeys(s,o){var i=Object.keys(s);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(s);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(s,o).enumerable}))),i.push.apply(i,a)}return i}function _objectSpread(s){for(var o=1;o=a?i.notify(s):o.length>u.length&&i.notify(_objectSpread(_objectSpread({},s),{},{target:_objectSpread(_objectSpread({},s.target),{},{value:""})}))}))})),_defineProperty(_assertThisInitialized(i),"onKeyDown",(function(s){"Enter"===s.key&&i.forceNotify(s);var o=i.props.onKeyDown;o&&(s.persist(),o(s))})),_defineProperty(_assertThisInitialized(i),"onBlur",(function(s){i.forceNotify(s);var o=i.props.onBlur;o&&(s.persist(),o(s))})),_defineProperty(_assertThisInitialized(i),"createNotifier",(function(s){if(s<0)i.notify=function(){return null};else if(0===s)i.notify=i.doNotify;else{var o=(0,u.default)((function(s){i.isDebouncing=!1,i.doNotify(s)}),s);i.notify=function(s){i.isDebouncing=!0,o(s)},i.flush=function(){return o.flush()},i.cancel=function(){i.isDebouncing=!1,o.cancel()}}})),_defineProperty(_assertThisInitialized(i),"doNotify",(function(){i.props.onChange.apply(void 0,arguments)})),_defineProperty(_assertThisInitialized(i),"forceNotify",(function(s){var o=i.props.debounceTimeout;if(i.isDebouncing||!(o>0)){i.cancel&&i.cancel();var a=i.state.value,u=i.props.minLength;a.length>=u?i.doNotify(s):i.doNotify(_objectSpread(_objectSpread({},s),{},{target:_objectSpread(_objectSpread({},s.target),{},{value:a})}))}})),i.isDebouncing=!1,i.state={value:void 0===s.value||null===s.value?"":s.value};var a=i.props.debounceTimeout;return i.createNotifier(a),i}return function _createClass(s,o,i){return o&&_defineProperties(s.prototype,o),i&&_defineProperties(s,i),Object.defineProperty(s,"prototype",{writable:!1}),s}(DebounceInput,[{key:"componentDidUpdate",value:function componentDidUpdate(s){if(!this.isDebouncing){var o=this.props,i=o.value,a=o.debounceTimeout,u=s.debounceTimeout,_=s.value,w=this.state.value;void 0!==i&&_!==i&&w!==i&&this.setState({value:i}),a!==u&&this.createNotifier(a)}}},{key:"componentWillUnmount",value:function componentWillUnmount(){this.flush&&this.flush()}},{key:"render",value:function render(){var s,o,i=this.props,u=i.element,w=(i.onChange,i.value,i.minLength,i.debounceTimeout,i.forceNotifyByEnter),x=i.forceNotifyOnBlur,C=i.onKeyDown,j=i.onBlur,L=i.inputRef,B=_objectWithoutProperties(i,_),$=this.state.value;s=w?{onKeyDown:this.onKeyDown}:C?{onKeyDown:C}:{},o=x?{onBlur:this.onBlur}:j?{onBlur:j}:{};var V=L?{ref:L}:{};return a.default.createElement(u,_objectSpread(_objectSpread(_objectSpread(_objectSpread({},B),{},{onChange:this.onChange,value:$},s),o),V))}}]),DebounceInput}(a.default.PureComponent);o.DebounceInput=w,_defineProperty(w,"defaultProps",{element:"input",type:"text",onKeyDown:void 0,onBlur:void 0,value:void 0,minLength:0,debounceTimeout:100,forceNotifyByEnter:!0,forceNotifyOnBlur:!0,inputRef:void 0})},24677(s,o,i){"use strict";var a=i(81214).DebounceInput;a.DebounceInput=a,s.exports=a},22551(s,o,i){"use strict";var a=i(96540),u=i(69982);function p(s){for(var o="https://reactjs.org/docs/error-decoder.html?invariant="+s,i=1;i
\n \n )\n}\n\nAccordion.propTypes = {\n expanded: PropTypes.bool,\n children: PropTypes.node.isRequired,\n onChange: PropTypes.func.isRequired,\n}\n\nAccordion.defaultProps = {\n expanded: false,\n}\n\nexport default Accordion\n","/**\n * @prettier\n */\nimport React, { useCallback } from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst ExpandDeepButton = ({ expanded, onClick }) => {\n const handleExpansion = useCallback(\n (event) => {\n onClick(event, !expanded)\n },\n [expanded, onClick]\n )\n\n return (\n \n {expanded ? \"Collapse all\" : \"Expand all\"}\n \n )\n}\n\nExpandDeepButton.propTypes = {\n expanded: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n}\n\nexport default ExpandDeepButton\n","/**\n * @prettier\n */\nimport React, { forwardRef, useState, useCallback, useEffect } from \"react\"\nimport PropTypes from \"prop-types\"\nimport classNames from \"classnames\"\n\nimport * as propTypes from \"../../prop-types\"\nimport {\n useComponent,\n useLevel,\n useFn,\n useIsEmbedded,\n useIsExpanded,\n useIsExpandedDeeply,\n useIsCircular,\n useRenderedSchemas,\n} from \"../../hooks\"\nimport {\n JSONSchemaLevelContext,\n JSONSchemaDeepExpansionContext,\n JSONSchemaCyclesContext,\n} from \"../../context\"\n\nconst JSONSchema = forwardRef(\n ({ schema, name, dependentRequired, onExpand }, ref) => {\n const fn = useFn()\n const isExpanded = useIsExpanded()\n const isExpandedDeeply = useIsExpandedDeeply()\n const [expanded, setExpanded] = useState(isExpanded || isExpandedDeeply)\n const [expandedDeeply, setExpandedDeeply] = useState(isExpandedDeeply)\n const [level, nextLevel] = useLevel()\n const isEmbedded = useIsEmbedded()\n const isExpandable = fn.isExpandable(schema) || dependentRequired.length > 0\n const isCircular = useIsCircular(schema)\n const renderedSchemas = useRenderedSchemas(schema)\n const constraints = fn.stringifyConstraints(schema)\n const Accordion = useComponent(\"Accordion\")\n const Keyword$schema = useComponent(\"Keyword$schema\")\n const Keyword$vocabulary = useComponent(\"Keyword$vocabulary\")\n const Keyword$id = useComponent(\"Keyword$id\")\n const Keyword$anchor = useComponent(\"Keyword$anchor\")\n const Keyword$dynamicAnchor = useComponent(\"Keyword$dynamicAnchor\")\n const Keyword$ref = useComponent(\"Keyword$ref\")\n const Keyword$dynamicRef = useComponent(\"Keyword$dynamicRef\")\n const Keyword$defs = useComponent(\"Keyword$defs\")\n const Keyword$comment = useComponent(\"Keyword$comment\")\n const KeywordAllOf = useComponent(\"KeywordAllOf\")\n const KeywordAnyOf = useComponent(\"KeywordAnyOf\")\n const KeywordOneOf = useComponent(\"KeywordOneOf\")\n const KeywordNot = useComponent(\"KeywordNot\")\n const KeywordIf = useComponent(\"KeywordIf\")\n const KeywordThen = useComponent(\"KeywordThen\")\n const KeywordElse = useComponent(\"KeywordElse\")\n const KeywordDependentSchemas = useComponent(\"KeywordDependentSchemas\")\n const KeywordPrefixItems = useComponent(\"KeywordPrefixItems\")\n const KeywordItems = useComponent(\"KeywordItems\")\n const KeywordContains = useComponent(\"KeywordContains\")\n const KeywordProperties = useComponent(\"KeywordProperties\")\n const KeywordPatternProperties = useComponent(\"KeywordPatternProperties\")\n const KeywordAdditionalProperties = useComponent(\n \"KeywordAdditionalProperties\"\n )\n const KeywordPropertyNames = useComponent(\"KeywordPropertyNames\")\n const KeywordUnevaluatedItems = useComponent(\"KeywordUnevaluatedItems\")\n const KeywordUnevaluatedProperties = useComponent(\n \"KeywordUnevaluatedProperties\"\n )\n const KeywordType = useComponent(\"KeywordType\")\n const KeywordEnum = useComponent(\"KeywordEnum\")\n const KeywordConst = useComponent(\"KeywordConst\")\n const KeywordConstraint = useComponent(\"KeywordConstraint\")\n const KeywordDependentRequired = useComponent(\"KeywordDependentRequired\")\n const KeywordContentSchema = useComponent(\"KeywordContentSchema\")\n const KeywordTitle = useComponent(\"KeywordTitle\")\n const KeywordDescription = useComponent(\"KeywordDescription\")\n const KeywordDefault = useComponent(\"KeywordDefault\")\n const KeywordDeprecated = useComponent(\"KeywordDeprecated\")\n const KeywordReadOnly = useComponent(\"KeywordReadOnly\")\n const KeywordWriteOnly = useComponent(\"KeywordWriteOnly\")\n const ExpandDeepButton = useComponent(\"ExpandDeepButton\")\n\n /**\n * Effects handlers.\n */\n useEffect(() => {\n setExpandedDeeply(isExpandedDeeply)\n }, [isExpandedDeeply])\n\n useEffect(() => {\n setExpandedDeeply(expandedDeeply)\n }, [expandedDeeply])\n\n /**\n * Event handlers.\n */\n const handleExpansion = useCallback(\n (e, expandedNew) => {\n setExpanded(expandedNew)\n !expandedNew && setExpandedDeeply(false)\n onExpand(e, expandedNew, false)\n },\n [onExpand]\n )\n const handleExpansionDeep = useCallback(\n (e, expandedDeepNew) => {\n setExpanded(expandedDeepNew)\n setExpandedDeeply(expandedDeepNew)\n onExpand(e, expandedDeepNew, true)\n },\n [onExpand]\n )\n\n return (\n \n \n \n \n
\n {isExpandable && !isCircular ? (\n <>\n \n \n \n \n \n ) : (\n \n )}\n \n \n \n \n {constraints.length > 0 &&\n constraints.map((constraint) => (\n \n ))}\n
\n \n {expanded && (\n <>\n \n {!isCircular && isExpandable && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n {!isCircular && isExpandable && (\n \n )}\n \n \n \n )}\n \n \n
\n
\n
\n )\n }\n)\n\nJSONSchema.propTypes = {\n name: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n schema: propTypes.schema.isRequired,\n dependentRequired: PropTypes.arrayOf(PropTypes.string),\n onExpand: PropTypes.func,\n}\n\nJSONSchema.defaultProps = {\n name: \"\",\n dependentRequired: [],\n onExpand: () => {},\n}\n\nexport default JSONSchema\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nconst ChevronRight = () => (\n \n \n \n)\n\nexport default ChevronRight\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\n\nconst $anchor = ({ schema }) => {\n if (!schema?.$anchor) return null\n\n return (\n
\n \n $anchor\n \n \n {schema.$anchor}\n \n
\n )\n}\n\n$anchor.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default $anchor\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\n\nconst $comment = ({ schema }) => {\n if (!schema?.$comment) return null\n\n return (\n
\n \n $comment\n \n \n {schema.$comment}\n \n
\n )\n}\n\n$comment.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default $comment\n","/**\n * @prettier\n */\nimport React, { useCallback, useState } from \"react\"\nimport classNames from \"classnames\"\n\nimport { schema } from \"../../prop-types\"\nimport { useComponent, useIsExpandedDeeply } from \"../../hooks\"\nimport { JSONSchemaDeepExpansionContext } from \"../../context\"\n\nconst $defs = ({ schema }) => {\n const $defs = schema?.$defs || {}\n const isExpandedDeeply = useIsExpandedDeeply()\n const [expanded, setExpanded] = useState(isExpandedDeeply)\n const [expandedDeeply, setExpandedDeeply] = useState(false)\n const Accordion = useComponent(\"Accordion\")\n const ExpandDeepButton = useComponent(\"ExpandDeepButton\")\n const JSONSchema = useComponent(\"JSONSchema\")\n\n /**\n * Event handlers.\n */\n const handleExpansion = useCallback(() => {\n setExpanded((prev) => !prev)\n }, [])\n const handleExpansionDeep = useCallback((e, expandedDeepNew) => {\n setExpanded(expandedDeepNew)\n setExpandedDeeply(expandedDeepNew)\n }, [])\n\n /**\n * Rendering.\n */\n if (Object.keys($defs).length === 0) {\n return null\n }\n\n return (\n \n
\n \n \n $defs\n \n \n \n \n object\n \n \n {expanded && (\n <>\n {Object.entries($defs).map(([schemaName, schema]) => (\n
  • \n \n
  • \n ))}\n \n )}\n \n
    \n
    \n )\n}\n\n$defs.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default $defs\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\n\nconst $dynamicAnchor = ({ schema }) => {\n if (!schema?.$dynamicAnchor) return null\n\n return (\n
    \n \n $dynamicAnchor\n \n \n {schema.$dynamicAnchor}\n \n
    \n )\n}\n\n$dynamicAnchor.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default $dynamicAnchor\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\n\nconst $dynamicRef = ({ schema }) => {\n if (!schema?.$dynamicRef) return null\n\n return (\n
    \n \n $dynamicRef\n \n \n {schema.$dynamicRef}\n \n
    \n )\n}\n\n$dynamicRef.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default $dynamicRef\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\n\nconst $id = ({ schema }) => {\n if (!schema?.$id) return null\n\n return (\n
    \n \n $id\n \n \n {schema.$id}\n \n
    \n )\n}\n\n$id.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default $id\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\n\nconst $ref = ({ schema }) => {\n if (!schema?.$ref) return null\n\n return (\n
    \n \n $ref\n \n \n {schema.$ref}\n \n
    \n )\n}\n\n$ref.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default $ref\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\n\nconst $schema = ({ schema }) => {\n if (!schema?.$schema) return null\n\n return (\n
    \n \n $schema\n \n \n {schema.$schema}\n \n
    \n )\n}\n\n$schema.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default $schema\n","/**\n * @prettier\n */\nimport React, { useCallback, useState } from \"react\"\nimport classNames from \"classnames\"\n\nimport { schema } from \"../../../prop-types\"\nimport { useComponent, useIsExpandedDeeply } from \"../../../hooks\"\n\nconst $vocabulary = ({ schema }) => {\n const isExpandedDeeply = useIsExpandedDeeply()\n const [expanded, setExpanded] = useState(isExpandedDeeply)\n const Accordion = useComponent(\"Accordion\")\n\n const handleExpansion = useCallback(() => {\n setExpanded((prev) => !prev)\n }, [])\n\n /**\n * Rendering.\n */\n if (!schema?.$vocabulary) return null\n if (typeof schema.$vocabulary !== \"object\") return null\n\n return (\n
    \n \n \n $vocabulary\n \n \n \n object\n \n
      \n {expanded &&\n Object.entries(schema.$vocabulary).map(([uri, enabled]) => (\n \n \n {uri}\n \n \n ))}\n
    \n
    \n )\n}\n\n$vocabulary.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default $vocabulary\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\nimport { useFn, useComponent } from \"../../hooks\"\n\nconst AdditionalProperties = ({ schema }) => {\n const fn = useFn()\n const { additionalProperties } = schema\n const JSONSchema = useComponent(\"JSONSchema\")\n\n if (!fn.hasKeyword(schema, \"additionalProperties\")) return null\n\n /**\n * Rendering.\n */\n const name = (\n \n Additional properties\n \n )\n\n return (\n
    \n {additionalProperties === true ? (\n <>\n {name}\n \n allowed\n \n \n ) : additionalProperties === false ? (\n <>\n {name}\n \n forbidden\n \n \n ) : (\n \n )}\n
    \n )\n}\n\nAdditionalProperties.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default AdditionalProperties\n","/**\n * @prettier\n */\nimport React, { useCallback, useState } from \"react\"\nimport classNames from \"classnames\"\n\nimport { schema } from \"../../prop-types\"\nimport { useFn, useComponent, useIsExpandedDeeply } from \"../../hooks\"\nimport { JSONSchemaDeepExpansionContext } from \"../../context\"\n\nconst AllOf = ({ schema }) => {\n const allOf = schema?.allOf || []\n const fn = useFn()\n const isExpandedDeeply = useIsExpandedDeeply()\n const [expanded, setExpanded] = useState(isExpandedDeeply)\n const [expandedDeeply, setExpandedDeeply] = useState(false)\n const Accordion = useComponent(\"Accordion\")\n const ExpandDeepButton = useComponent(\"ExpandDeepButton\")\n const JSONSchema = useComponent(\"JSONSchema\")\n const KeywordType = useComponent(\"KeywordType\")\n\n /**\n * Event handlers.\n */\n const handleExpansion = useCallback(() => {\n setExpanded((prev) => !prev)\n }, [])\n const handleExpansionDeep = useCallback((e, expandedDeepNew) => {\n setExpanded(expandedDeepNew)\n setExpandedDeeply(expandedDeepNew)\n }, [])\n\n /**\n * Rendering.\n */\n if (!Array.isArray(allOf) || allOf.length === 0) {\n return null\n }\n\n return (\n \n
    \n \n \n All of\n \n \n \n \n \n {expanded && (\n <>\n {allOf.map((schema, index) => (\n
  • \n \n
  • \n ))}\n \n )}\n \n
    \n
    \n )\n}\n\nAllOf.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default AllOf\n","/**\n * @prettier\n */\nimport React, { useCallback, useState } from \"react\"\nimport classNames from \"classnames\"\n\nimport { schema } from \"../../prop-types\"\nimport { useFn, useComponent, useIsExpandedDeeply } from \"../../hooks\"\nimport { JSONSchemaDeepExpansionContext } from \"../../context\"\n\nconst AnyOf = ({ schema }) => {\n const anyOf = schema?.anyOf || []\n const fn = useFn()\n const isExpandedDeeply = useIsExpandedDeeply()\n const [expanded, setExpanded] = useState(isExpandedDeeply)\n const [expandedDeeply, setExpandedDeeply] = useState(false)\n const Accordion = useComponent(\"Accordion\")\n const ExpandDeepButton = useComponent(\"ExpandDeepButton\")\n const JSONSchema = useComponent(\"JSONSchema\")\n const KeywordType = useComponent(\"KeywordType\")\n\n /**\n * Event handlers.\n */\n const handleExpansion = useCallback(() => {\n setExpanded((prev) => !prev)\n }, [])\n const handleExpansionDeep = useCallback((e, expandedDeepNew) => {\n setExpanded(expandedDeepNew)\n setExpandedDeeply(expandedDeepNew)\n }, [])\n\n /**\n * Rendering.\n */\n if (!Array.isArray(anyOf) || anyOf.length === 0) {\n return null\n }\n\n return (\n \n
    \n \n \n Any of\n \n \n \n \n \n {expanded && (\n <>\n {anyOf.map((schema, index) => (\n
  • \n \n
  • \n ))}\n \n )}\n \n
    \n
    \n )\n}\n\nAnyOf.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default AnyOf\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\nimport { useFn } from \"../../hooks\"\n\nconst Const = ({ schema }) => {\n const fn = useFn()\n\n if (!fn.hasKeyword(schema, \"const\")) return null\n\n return (\n
    \n \n Const\n \n \n {fn.stringify(schema.const)}\n \n
    \n )\n}\n\nConst.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default Const\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\n\n/**\n * This component represents various constraint keywords\n * from JSON Schema 2020-12 validation vocabulary.\n */\nconst Constraint = ({ constraint }) => (\n \n {constraint.value}\n \n)\n\nConstraint.propTypes = {\n constraint: PropTypes.shape({\n scope: PropTypes.oneOf([\"number\", \"string\", \"array\", \"object\"]).isRequired,\n value: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default React.memo(Constraint)\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\nimport { useFn, useComponent } from \"../../hooks\"\n\nconst Contains = ({ schema }) => {\n const fn = useFn()\n const JSONSchema = useComponent(\"JSONSchema\")\n\n /**\n * Rendering.\n */\n if (!fn.hasKeyword(schema, \"contains\")) return null\n\n const name = (\n \n Contains\n \n )\n\n return (\n
    \n \n
    \n )\n}\n\nContains.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default Contains\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\nimport { useFn, useComponent } from \"../../hooks\"\n\nconst ContentSchema = ({ schema }) => {\n const fn = useFn()\n const JSONSchema = useComponent(\"JSONSchema\")\n\n /**\n * Rendering.\n */\n if (!fn.hasKeyword(schema, \"contentSchema\")) return null\n\n const name = (\n \n Content schema\n \n )\n\n return (\n
    \n \n
    \n )\n}\n\nContentSchema.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default ContentSchema\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\nimport { useFn } from \"../../hooks\"\n\nconst Default = ({ schema }) => {\n const fn = useFn()\n\n if (!fn.hasKeyword(schema, \"default\")) return null\n\n return (\n
    \n \n Default\n \n \n {fn.stringify(schema.default)}\n \n
    \n )\n}\n\nDefault.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default Default\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport * as propTypes from \"../../../prop-types\"\n\nconst DependentRequired = ({ dependentRequired }) => {\n if (dependentRequired.length === 0) return null\n\n return (\n
    \n \n Required when defined\n \n
      \n {dependentRequired.map((propertyName) => (\n
    • \n \n {propertyName}\n \n
    • \n ))}\n
    \n
    \n )\n}\n\nDependentRequired.propTypes = {\n schema: propTypes.schema.isRequired,\n dependentRequired: PropTypes.arrayOf(PropTypes.string).isRequired,\n}\n\nexport default DependentRequired\n","/**\n * @prettier\n */\nimport React, { useCallback, useState } from \"react\"\nimport classNames from \"classnames\"\n\nimport { schema } from \"../../prop-types\"\nimport { useComponent, useIsExpandedDeeply } from \"../../hooks\"\nimport { JSONSchemaDeepExpansionContext } from \"../../context\"\n\nconst DependentSchemas = ({ schema }) => {\n const dependentSchemas = schema?.dependentSchemas || []\n const isExpandedDeeply = useIsExpandedDeeply()\n const [expanded, setExpanded] = useState(isExpandedDeeply)\n const [expandedDeeply, setExpandedDeeply] = useState(false)\n const Accordion = useComponent(\"Accordion\")\n const ExpandDeepButton = useComponent(\"ExpandDeepButton\")\n const JSONSchema = useComponent(\"JSONSchema\")\n\n /**\n * Event handlers.\n */\n const handleExpansion = useCallback(() => {\n setExpanded((prev) => !prev)\n }, [])\n const handleExpansionDeep = useCallback((e, expandedDeepNew) => {\n setExpanded(expandedDeepNew)\n setExpandedDeeply(expandedDeepNew)\n }, [])\n\n /**\n * Rendering.\n */\n if (typeof dependentSchemas !== \"object\") return null\n if (Object.keys(dependentSchemas).length === 0) return null\n\n return (\n \n
    \n \n \n Dependent schemas\n \n \n \n \n object\n \n \n {expanded && (\n <>\n {Object.entries(dependentSchemas).map(([schemaName, schema]) => (\n
  • \n \n
  • \n ))}\n \n )}\n \n
    \n
    \n )\n}\n\nDependentSchemas.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default DependentSchemas\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\n\nconst Deprecated = ({ schema }) => {\n if (schema?.deprecated !== true) return null\n\n return (\n \n deprecated\n \n )\n}\n\nDeprecated.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default Deprecated\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../../prop-types\"\n\nconst Description = ({ schema }) => {\n if (!schema?.description) return null\n\n return (\n
    \n
    \n {schema.description}\n
    \n
    \n )\n}\n\nDescription.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default Description\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\nimport { useFn, useComponent } from \"../../hooks\"\n\nconst Else = ({ schema }) => {\n const fn = useFn()\n const JSONSchema = useComponent(\"JSONSchema\")\n\n /**\n * Rendering.\n */\n if (!fn.hasKeyword(schema, \"else\")) return null\n\n const name = (\n \n Else\n \n )\n\n return (\n
    \n \n
    \n )\n}\n\nElse.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default Else\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../../prop-types\"\nimport { useFn } from \"../../../hooks\"\n\nconst Enum = ({ schema }) => {\n const fn = useFn()\n\n if (!Array.isArray(schema?.enum)) return null\n\n return (\n
    \n \n Allowed values\n \n
      \n {schema.enum.map((element) => {\n const strigifiedElement = fn.stringify(element)\n\n return (\n
    • \n \n {strigifiedElement}\n \n
    • \n )\n })}\n
    \n
    \n )\n}\n\nEnum.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default Enum\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\nimport { useFn, useComponent } from \"../../hooks\"\n\nconst If = ({ schema }) => {\n const fn = useFn()\n const JSONSchema = useComponent(\"JSONSchema\")\n\n /**\n * Rendering.\n */\n if (!fn.hasKeyword(schema, \"if\")) return null\n\n const name = (\n \n If\n \n )\n\n return (\n
    \n \n
    \n )\n}\n\nIf.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default If\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\nimport { useFn, useComponent } from \"../../hooks\"\n\nconst Items = ({ schema }) => {\n const fn = useFn()\n const JSONSchema = useComponent(\"JSONSchema\")\n\n /**\n * Rendering.\n */\n if (!fn.hasKeyword(schema, \"items\")) return null\n\n const name = (\n \n Items\n \n )\n\n return (\n
    \n \n
    \n )\n}\n\nItems.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default Items\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\nimport { useFn, useComponent } from \"../../hooks\"\n\nconst Not = ({ schema }) => {\n const fn = useFn()\n const JSONSchema = useComponent(\"JSONSchema\")\n\n /**\n * Rendering.\n */\n if (!fn.hasKeyword(schema, \"not\")) return null\n\n const name = (\n \n Not\n \n )\n\n return (\n
    \n \n
    \n )\n}\n\nNot.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default Not\n","/**\n * @prettier\n */\nimport React, { useCallback, useState } from \"react\"\nimport classNames from \"classnames\"\n\nimport { schema } from \"../../prop-types\"\nimport { useFn, useComponent, useIsExpandedDeeply } from \"../../hooks\"\nimport { JSONSchemaDeepExpansionContext } from \"../../context\"\n\nconst OneOf = ({ schema }) => {\n const oneOf = schema?.oneOf || []\n const fn = useFn()\n const isExpandedDeeply = useIsExpandedDeeply()\n const [expanded, setExpanded] = useState(isExpandedDeeply)\n const [expandedDeeply, setExpandedDeeply] = useState(false)\n const Accordion = useComponent(\"Accordion\")\n const ExpandDeepButton = useComponent(\"ExpandDeepButton\")\n const JSONSchema = useComponent(\"JSONSchema\")\n const KeywordType = useComponent(\"KeywordType\")\n\n /**\n * Event handlers.\n */\n const handleExpansion = useCallback(() => {\n setExpanded((prev) => !prev)\n }, [])\n const handleExpansionDeep = useCallback((e, expandedDeepNew) => {\n setExpanded(expandedDeepNew)\n setExpandedDeeply(expandedDeepNew)\n }, [])\n\n /**\n * Rendering.\n */\n if (!Array.isArray(oneOf) || oneOf.length === 0) {\n return null\n }\n\n return (\n \n
    \n \n \n One of\n \n \n \n \n \n {expanded && (\n <>\n {oneOf.map((schema, index) => (\n
  • \n \n
  • \n ))}\n \n )}\n \n
    \n
    \n )\n}\n\nOneOf.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default OneOf\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../../prop-types\"\nimport { useComponent } from \"../../../hooks\"\n\nconst PatternProperties = ({ schema }) => {\n const patternProperties = schema?.patternProperties || {}\n const JSONSchema = useComponent(\"JSONSchema\")\n\n /**\n * Rendering.\n */\n if (Object.keys(patternProperties).length === 0) {\n return null\n }\n\n return (\n
    \n
      \n {Object.entries(patternProperties).map(([propertyName, schema]) => (\n
    • \n \n
    • \n ))}\n
    \n
    \n )\n}\n\nPatternProperties.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default PatternProperties\n","/**\n * @prettier\n */\nimport React, { useCallback, useState } from \"react\"\nimport classNames from \"classnames\"\n\nimport { schema } from \"../../prop-types\"\nimport { useFn, useComponent, useIsExpandedDeeply } from \"../../hooks\"\nimport { JSONSchemaDeepExpansionContext } from \"../../context\"\n\nconst PrefixItems = ({ schema }) => {\n const prefixItems = schema?.prefixItems || []\n const fn = useFn()\n const isExpandedDeeply = useIsExpandedDeeply()\n const [expanded, setExpanded] = useState(isExpandedDeeply)\n const [expandedDeeply, setExpandedDeeply] = useState(false)\n const Accordion = useComponent(\"Accordion\")\n const ExpandDeepButton = useComponent(\"ExpandDeepButton\")\n const JSONSchema = useComponent(\"JSONSchema\")\n const KeywordType = useComponent(\"KeywordType\")\n\n /**\n * Event handlers.\n */\n const handleExpansion = useCallback(() => {\n setExpanded((prev) => !prev)\n }, [])\n const handleExpansionDeep = useCallback((e, expandedDeepNew) => {\n setExpanded(expandedDeepNew)\n setExpandedDeeply(expandedDeepNew)\n }, [])\n\n /**\n * Rendering.\n */\n if (!Array.isArray(prefixItems) || prefixItems.length === 0) {\n return null\n }\n\n return (\n \n
    \n \n \n Prefix items\n \n \n \n \n \n {expanded && (\n <>\n {prefixItems.map((schema, index) => (\n
  • \n \n
  • \n ))}\n \n )}\n \n
    \n
    \n )\n}\n\nPrefixItems.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default PrefixItems\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport classNames from \"classnames\"\n\nimport { schema } from \"../../../prop-types\"\nimport { useFn, useComponent } from \"../../../hooks\"\n\nconst Properties = ({ schema }) => {\n const fn = useFn()\n const properties = schema?.properties || {}\n const required = Array.isArray(schema?.required) ? schema.required : []\n const JSONSchema = useComponent(\"JSONSchema\")\n\n /**\n * Rendering.\n */\n if (Object.keys(properties).length === 0) {\n return null\n }\n\n return (\n
    \n
      \n {Object.entries(properties).map(([propertyName, propertySchema]) => {\n const isRequired = required.includes(propertyName)\n const dependentRequired = fn.getDependentRequired(\n propertyName,\n schema\n )\n\n return (\n \n \n \n )\n })}\n
    \n
    \n )\n}\n\nProperties.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default Properties\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\nimport { useFn, useComponent } from \"../../hooks\"\n\nconst PropertyNames = ({ schema }) => {\n const fn = useFn()\n const { propertyNames } = schema\n const JSONSchema = useComponent(\"JSONSchema\")\n const name = (\n \n Property names\n \n )\n\n /**\n * Rendering.\n */\n if (!fn.hasKeyword(schema, \"propertyNames\")) return null\n\n return (\n
    \n \n
    \n )\n}\n\nPropertyNames.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default PropertyNames\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\n\nconst ReadOnly = ({ schema }) => {\n if (schema?.readOnly !== true) return null\n\n return (\n \n read-only\n \n )\n}\n\nReadOnly.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default ReadOnly\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\nimport { useFn, useComponent } from \"../../hooks\"\n\nconst Then = ({ schema }) => {\n const fn = useFn()\n const JSONSchema = useComponent(\"JSONSchema\")\n\n /**\n * Rendering.\n */\n if (!fn.hasKeyword(schema, \"then\")) return null\n\n const name = (\n \n Then\n \n )\n\n return (\n
    \n \n
    \n )\n}\n\nThen.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default Then\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport { schema } from \"../../../prop-types\"\nimport { useFn } from \"../../../hooks\"\n\nconst Title = ({ title, schema }) => {\n const fn = useFn()\n const renderedTitle = title || fn.getTitle(schema)\n\n if (!renderedTitle) return null\n\n return (\n
    \n {title || fn.getTitle(schema)}\n
    \n )\n}\n\nTitle.propTypes = {\n title: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n schema: schema.isRequired,\n}\n\nTitle.defaultProps = {\n title: \"\",\n}\n\nexport default Title\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport { schema } from \"../../prop-types\"\nimport { useFn } from \"../../hooks\"\n\nconst Type = ({ schema, isCircular }) => {\n const fn = useFn()\n const type = fn.getType(schema)\n const circularSuffix = isCircular ? \" [circular]\" : \"\"\n\n return (\n \n {`${type}${circularSuffix}`}\n \n )\n}\n\nType.propTypes = {\n schema: schema.isRequired,\n isCircular: PropTypes.bool,\n}\n\nType.defaultProps = {\n isCircular: false,\n}\n\nexport default Type\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\nimport { useFn, useComponent } from \"../../hooks\"\n\nconst UnevaluatedItems = ({ schema }) => {\n const fn = useFn()\n const { unevaluatedItems } = schema\n const JSONSchema = useComponent(\"JSONSchema\")\n\n /**\n * Rendering.\n */\n if (!fn.hasKeyword(schema, \"unevaluatedItems\")) return null\n\n const name = (\n \n Unevaluated items\n \n )\n\n return (\n
    \n \n
    \n )\n}\n\nUnevaluatedItems.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default UnevaluatedItems\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\nimport { useFn, useComponent } from \"../../hooks\"\n\nconst UnevaluatedProperties = ({ schema }) => {\n const fn = useFn()\n const { unevaluatedProperties } = schema\n const JSONSchema = useComponent(\"JSONSchema\")\n\n /**\n * Rendering.\n */\n if (!fn.hasKeyword(schema, \"unevaluatedProperties\")) return null\n\n const name = (\n \n Unevaluated properties\n \n )\n\n return (\n
    \n \n
    \n )\n}\n\nUnevaluatedProperties.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default UnevaluatedProperties\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { schema } from \"../../prop-types\"\n\nconst WriteOnly = ({ schema }) => {\n if (schema?.writeOnly !== true) return null\n\n return (\n \n write-only\n \n )\n}\n\nWriteOnly.propTypes = {\n schema: schema.isRequired,\n}\n\nexport default WriteOnly\n","/**\n * @prettier\n */\nimport { createContext } from \"react\"\n\nexport const JSONSchemaContext = createContext(null)\nJSONSchemaContext.displayName = \"JSONSchemaContext\"\n\nexport const JSONSchemaLevelContext = createContext(0)\nJSONSchemaLevelContext.displayName = \"JSONSchemaLevelContext\"\n\nexport const JSONSchemaDeepExpansionContext = createContext(false)\nJSONSchemaDeepExpansionContext.displayName = \"JSONSchemaDeepExpansionContext\"\n\nexport const JSONSchemaCyclesContext = createContext(new Set())\n","/**\n * @prettier\n */\nimport { useFn } from \"./hooks\"\n\nexport const upperFirst = (value) => {\n if (typeof value === \"string\") {\n return `${value.charAt(0).toUpperCase()}${value.slice(1)}`\n }\n return value\n}\n\nexport const getTitle = (schema) => {\n const fn = useFn()\n\n if (schema?.title) return fn.upperFirst(schema.title)\n if (schema?.$anchor) return fn.upperFirst(schema.$anchor)\n if (schema?.$id) return schema.$id\n\n return \"\"\n}\n\nexport const getType = (schema, processedSchemas = new WeakSet()) => {\n const fn = useFn()\n\n if (schema == null) {\n return \"any\"\n }\n\n if (fn.isBooleanJSONSchema(schema)) {\n return schema ? \"any\" : \"never\"\n }\n\n if (typeof schema !== \"object\") {\n return \"any\"\n }\n\n if (processedSchemas.has(schema)) {\n return \"any\" // detect a cycle\n }\n processedSchemas.add(schema)\n\n const { type, prefixItems, items } = schema\n\n const getArrayType = () => {\n if (Array.isArray(prefixItems)) {\n const prefixItemsTypes = prefixItems.map((itemSchema) =>\n getType(itemSchema, processedSchemas)\n )\n const itemsType = items ? getType(items, processedSchemas) : \"any\"\n return `array<[${prefixItemsTypes.join(\", \")}], ${itemsType}>`\n } else if (items) {\n const itemsType = getType(items, processedSchemas)\n return `array<${itemsType}>`\n } else {\n return \"array\"\n }\n }\n\n const inferType = () => {\n if (\n Object.hasOwn(schema, \"prefixItems\") ||\n Object.hasOwn(schema, \"items\") ||\n Object.hasOwn(schema, \"contains\")\n ) {\n return getArrayType()\n } else if (\n Object.hasOwn(schema, \"properties\") ||\n Object.hasOwn(schema, \"additionalProperties\") ||\n Object.hasOwn(schema, \"patternProperties\")\n ) {\n return \"object\"\n } else if ([\"int32\", \"int64\"].includes(schema.format)) {\n // OpenAPI 3.1.0 integer custom formats\n return \"integer\"\n } else if ([\"float\", \"double\"].includes(schema.format)) {\n // OpenAPI 3.1.0 number custom formats\n return \"number\"\n } else if (\n Object.hasOwn(schema, \"minimum\") ||\n Object.hasOwn(schema, \"maximum\") ||\n Object.hasOwn(schema, \"exclusiveMinimum\") ||\n Object.hasOwn(schema, \"exclusiveMaximum\") ||\n Object.hasOwn(schema, \"multipleOf\")\n ) {\n return \"number | integer\"\n } else if (\n Object.hasOwn(schema, \"pattern\") ||\n Object.hasOwn(schema, \"format\") ||\n Object.hasOwn(schema, \"minLength\") ||\n Object.hasOwn(schema, \"maxLength\")\n ) {\n return \"string\"\n } else if (typeof schema.const !== \"undefined\") {\n if (schema.const === null) {\n return \"null\"\n } else if (typeof schema.const === \"boolean\") {\n return \"boolean\"\n } else if (typeof schema.const === \"number\") {\n return Number.isInteger(schema.const) ? \"integer\" : \"number\"\n } else if (typeof schema.const === \"string\") {\n return \"string\"\n } else if (Array.isArray(schema.const)) {\n return \"array\"\n } else if (typeof schema.const === \"object\") {\n return \"object\"\n }\n }\n return null\n }\n\n if (schema.not && getType(schema.not) === \"any\") {\n return \"never\"\n }\n\n const typeString = Array.isArray(type)\n ? type.map((t) => (t === \"array\" ? getArrayType() : t)).join(\" | \")\n : type === \"array\"\n ? getArrayType()\n : [\"null\", \"boolean\", \"object\", \"array\", \"number\", \"string\"].includes(type)\n ? type\n : inferType()\n\n const handleCombiningKeywords = (keyword, separator) => {\n if (Array.isArray(schema[keyword])) {\n const combinedTypes = schema[keyword].map((subSchema) =>\n getType(subSchema, processedSchemas)\n )\n return `(${combinedTypes.join(separator)})`\n }\n return null\n }\n\n const oneOfString = handleCombiningKeywords(\"oneOf\", \" | \")\n const anyOfString = handleCombiningKeywords(\"anyOf\", \" | \")\n const allOfString = handleCombiningKeywords(\"allOf\", \" & \")\n\n const combinedStrings = [typeString, oneOfString, anyOfString, allOfString]\n .filter(Boolean)\n .join(\" | \")\n\n processedSchemas.delete(schema)\n\n return combinedStrings || \"any\"\n}\n\nexport const isBooleanJSONSchema = (schema) => typeof schema === \"boolean\"\n\nexport const hasKeyword = (schema, keyword) =>\n schema !== null &&\n typeof schema === \"object\" &&\n Object.hasOwn(schema, keyword)\n\nexport const isExpandable = (schema) => {\n const fn = useFn()\n\n return (\n schema?.$schema ||\n schema?.$vocabulary ||\n schema?.$id ||\n schema?.$anchor ||\n schema?.$dynamicAnchor ||\n schema?.$ref ||\n schema?.$dynamicRef ||\n schema?.$defs ||\n schema?.$comment ||\n schema?.allOf ||\n schema?.anyOf ||\n schema?.oneOf ||\n fn.hasKeyword(schema, \"not\") ||\n fn.hasKeyword(schema, \"if\") ||\n fn.hasKeyword(schema, \"then\") ||\n fn.hasKeyword(schema, \"else\") ||\n schema?.dependentSchemas ||\n schema?.prefixItems ||\n fn.hasKeyword(schema, \"items\") ||\n fn.hasKeyword(schema, \"contains\") ||\n schema?.properties ||\n schema?.patternProperties ||\n fn.hasKeyword(schema, \"additionalProperties\") ||\n fn.hasKeyword(schema, \"propertyNames\") ||\n fn.hasKeyword(schema, \"unevaluatedItems\") ||\n fn.hasKeyword(schema, \"unevaluatedProperties\") ||\n schema?.description ||\n schema?.enum ||\n fn.hasKeyword(schema, \"const\") ||\n fn.hasKeyword(schema, \"contentSchema\") ||\n fn.hasKeyword(schema, \"default\")\n )\n}\n\nexport const stringify = (value) => {\n if (\n value === null ||\n [\"number\", \"bigint\", \"boolean\"].includes(typeof value)\n ) {\n return String(value)\n }\n\n if (Array.isArray(value)) {\n return `[${value.map(stringify).join(\", \")}]`\n }\n\n return JSON.stringify(value)\n}\n\nconst stringifyConstraintMultipleOf = (schema) => {\n if (typeof schema?.multipleOf !== \"number\") return null\n if (schema.multipleOf <= 0) return null\n if (schema.multipleOf === 1) return null\n\n const { multipleOf } = schema\n\n if (Number.isInteger(multipleOf)) {\n return `multiple of ${multipleOf}`\n }\n\n const decimalPlaces = multipleOf.toString().split(\".\")[1].length\n const factor = 10 ** decimalPlaces\n const numerator = multipleOf * factor\n const denominator = factor\n return `multiple of ${numerator}/${denominator}`\n}\n\nconst stringifyConstraintNumberRange = (schema) => {\n const minimum = schema?.minimum\n const maximum = schema?.maximum\n const exclusiveMinimum = schema?.exclusiveMinimum\n const exclusiveMaximum = schema?.exclusiveMaximum\n const hasMinimum = typeof minimum === \"number\"\n const hasMaximum = typeof maximum === \"number\"\n const hasExclusiveMinimum = typeof exclusiveMinimum === \"number\"\n const hasExclusiveMaximum = typeof exclusiveMaximum === \"number\"\n const isMinExclusive = hasExclusiveMinimum && minimum < exclusiveMinimum\n const isMaxExclusive = hasExclusiveMaximum && maximum > exclusiveMaximum\n\n if (hasMinimum && hasMaximum) {\n const minSymbol = isMinExclusive ? \"(\" : \"[\"\n const maxSymbol = isMaxExclusive ? \")\" : \"]\"\n const minValue = isMinExclusive ? exclusiveMinimum : minimum\n const maxValue = isMaxExclusive ? exclusiveMaximum : maximum\n return `${minSymbol}${minValue}, ${maxValue}${maxSymbol}`\n }\n if (hasMinimum) {\n const minSymbol = isMinExclusive ? \">\" : \"≥\"\n const minValue = isMinExclusive ? exclusiveMinimum : minimum\n return `${minSymbol} ${minValue}`\n }\n if (hasMaximum) {\n const maxSymbol = isMaxExclusive ? \"<\" : \"≤\"\n const maxValue = isMaxExclusive ? exclusiveMaximum : maximum\n return `${maxSymbol} ${maxValue}`\n }\n\n return null\n}\n\nconst stringifyConstraintRange = (label, min, max) => {\n const hasMin = typeof min === \"number\"\n const hasMax = typeof max === \"number\"\n\n if (hasMin && hasMax) {\n if (min === max) {\n return `${min} ${label}`\n } else {\n return `[${min}, ${max}] ${label}`\n }\n }\n if (hasMin) {\n return `>= ${min} ${label}`\n }\n if (hasMax) {\n return `<= ${max} ${label}`\n }\n\n return null\n}\n\nexport const stringifyConstraints = (schema) => {\n const constraints = []\n\n // validation Keywords for Numeric Instances (number and integer)\n const multipleOf = stringifyConstraintMultipleOf(schema)\n if (multipleOf !== null) {\n constraints.push({ scope: \"number\", value: multipleOf })\n }\n const numberRange = stringifyConstraintNumberRange(schema)\n if (numberRange !== null) {\n constraints.push({ scope: \"number\", value: numberRange })\n }\n\n // vocabularies for Semantic Content With \"format\"\n if (schema?.format) {\n constraints.push({ scope: \"string\", value: schema.format })\n }\n\n // validation Keywords for Strings\n const stringRange = stringifyConstraintRange(\n \"characters\",\n schema?.minLength,\n schema?.maxLength\n )\n if (stringRange !== null) {\n constraints.push({ scope: \"string\", value: stringRange })\n }\n if (schema?.pattern) {\n constraints.push({ scope: \"string\", value: `matches ${schema?.pattern}` })\n }\n\n // vocabulary for the Contents of String-Encoded Data\n if (schema?.contentMediaType) {\n constraints.push({\n scope: \"string\",\n value: `media type: ${schema.contentMediaType}`,\n })\n }\n if (schema?.contentEncoding) {\n constraints.push({\n scope: \"string\",\n value: `encoding: ${schema.contentEncoding}`,\n })\n }\n\n // validation Keywords for Arrays\n const arrayRange = stringifyConstraintRange(\n schema?.hasUniqueItems ? \"unique items\" : \"items\",\n schema?.minItems,\n schema?.maxItems\n )\n if (arrayRange !== null) {\n constraints.push({ scope: \"array\", value: arrayRange })\n }\n const containsRange = stringifyConstraintRange(\n \"contained items\",\n schema?.minContains,\n schema?.maxContains\n )\n if (containsRange !== null) {\n constraints.push({ scope: \"array\", value: containsRange })\n }\n\n // validation Keywords for Objects\n const objectRange = stringifyConstraintRange(\n \"properties\",\n schema?.minProperties,\n schema?.maxProperties\n )\n if (objectRange !== null) {\n constraints.push({ scope: \"object\", value: objectRange })\n }\n\n return constraints\n}\n\nexport const getDependentRequired = (propertyName, schema) => {\n if (!schema?.dependentRequired) return []\n\n return Array.from(\n Object.entries(schema.dependentRequired).reduce((acc, [prop, list]) => {\n if (!Array.isArray(list)) return acc\n if (!list.includes(propertyName)) return acc\n\n acc.add(prop)\n\n return acc\n }, new Set())\n )\n}\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport JSONSchema from \"./components/JSONSchema/JSONSchema\"\nimport Keyword$schema from \"./components/keywords/$schema\"\nimport Keyword$vocabulary from \"./components/keywords/$vocabulary/$vocabulary\"\nimport Keyword$id from \"./components/keywords/$id\"\nimport Keyword$anchor from \"./components/keywords/$anchor\"\nimport Keyword$dynamicAnchor from \"./components/keywords/$dynamicAnchor\"\nimport Keyword$ref from \"./components/keywords/$ref\"\nimport Keyword$dynamicRef from \"./components/keywords/$dynamicRef\"\nimport Keyword$defs from \"./components/keywords/$defs\"\nimport Keyword$comment from \"./components/keywords/$comment\"\nimport KeywordAllOf from \"./components/keywords/AllOf\"\nimport KeywordAnyOf from \"./components/keywords/AnyOf\"\nimport KeywordOneOf from \"./components/keywords/OneOf\"\nimport KeywordNot from \"./components/keywords/Not\"\nimport KeywordIf from \"./components/keywords/If\"\nimport KeywordThen from \"./components/keywords/Then\"\nimport KeywordElse from \"./components/keywords/Else\"\nimport KeywordDependentSchemas from \"./components/keywords/DependentSchemas\"\nimport KeywordPrefixItems from \"./components/keywords/PrefixItems\"\nimport KeywordItems from \"./components/keywords/Items\"\nimport KeywordContains from \"./components/keywords/Contains\"\nimport KeywordProperties from \"./components/keywords/Properties/Properties\"\nimport KeywordPatternProperties from \"./components/keywords/PatternProperties/PatternProperties\"\nimport KeywordAdditionalProperties from \"./components/keywords/AdditionalProperties\"\nimport KeywordPropertyNames from \"./components/keywords/PropertyNames\"\nimport KeywordUnevaluatedItems from \"./components/keywords/UnevaluatedItems\"\nimport KeywordUnevaluatedProperties from \"./components/keywords/UnevaluatedProperties\"\nimport KeywordType from \"./components/keywords/Type\"\nimport KeywordEnum from \"./components/keywords/Enum/Enum\"\nimport KeywordConst from \"./components/keywords/Const\"\nimport KeywordConstraint from \"./components/keywords/Constraint/Constraint\"\nimport KeywordDependentRequired from \"./components/keywords/DependentRequired/DependentRequired\"\nimport KeywordContentSchema from \"./components/keywords/ContentSchema\"\nimport KeywordTitle from \"./components/keywords/Title/Title\"\nimport KeywordDescription from \"./components/keywords/Description/Description\"\nimport KeywordDefault from \"./components/keywords/Default\"\nimport KeywordDeprecated from \"./components/keywords/Deprecated\"\nimport KeywordReadOnly from \"./components/keywords/ReadOnly\"\nimport KeywordWriteOnly from \"./components/keywords/WriteOnly\"\nimport Accordion from \"./components/Accordion/Accordion\"\nimport ExpandDeepButton from \"./components/ExpandDeepButton/ExpandDeepButton\"\nimport ChevronRightIcon from \"./components/icons/ChevronRight\"\nimport { JSONSchemaContext } from \"./context\"\nimport {\n getTitle,\n isBooleanJSONSchema,\n upperFirst,\n getType,\n hasKeyword,\n isExpandable,\n stringify,\n stringifyConstraints,\n getDependentRequired,\n} from \"./fn\"\n\nexport const withJSONSchemaContext = (Component, overrides = {}) => {\n const value = {\n components: {\n JSONSchema,\n Keyword$schema,\n Keyword$vocabulary,\n Keyword$id,\n Keyword$anchor,\n Keyword$dynamicAnchor,\n Keyword$ref,\n Keyword$dynamicRef,\n Keyword$defs,\n Keyword$comment,\n KeywordAllOf,\n KeywordAnyOf,\n KeywordOneOf,\n KeywordNot,\n KeywordIf,\n KeywordThen,\n KeywordElse,\n KeywordDependentSchemas,\n KeywordPrefixItems,\n KeywordItems,\n KeywordContains,\n KeywordProperties,\n KeywordPatternProperties,\n KeywordAdditionalProperties,\n KeywordPropertyNames,\n KeywordUnevaluatedItems,\n KeywordUnevaluatedProperties,\n KeywordType,\n KeywordEnum,\n KeywordConst,\n KeywordConstraint,\n KeywordDependentRequired,\n KeywordContentSchema,\n KeywordTitle,\n KeywordDescription,\n KeywordDefault,\n KeywordDeprecated,\n KeywordReadOnly,\n KeywordWriteOnly,\n Accordion,\n ExpandDeepButton,\n ChevronRightIcon,\n ...overrides.components,\n },\n config: {\n default$schema: \"https://json-schema.org/draft/2020-12/schema\",\n /**\n * Defines an upper exclusive boundary of the level range for automatic expansion.\n *\n * 0 -> do nothing\n * 1 -> [0]...(1)\n * 2 -> [0]...(2)\n * 3 -> [0]...(3)\n */\n defaultExpandedLevels: 0, // 2 = 0...2\n ...overrides.config,\n },\n fn: {\n upperFirst,\n getTitle,\n getType,\n isBooleanJSONSchema,\n hasKeyword,\n isExpandable,\n stringify,\n stringifyConstraints,\n getDependentRequired,\n ...overrides.fn,\n },\n }\n\n const HOC = (props) => (\n \n \n \n )\n HOC.contexts = {\n JSONSchemaContext,\n }\n HOC.displayName = Component.displayName\n\n return HOC\n}\n","/**\n * @prettier\n */\nimport { useContext } from \"react\"\n\nimport {\n JSONSchemaContext,\n JSONSchemaLevelContext,\n JSONSchemaDeepExpansionContext,\n JSONSchemaCyclesContext,\n} from \"./context\"\n\nexport const useConfig = () => {\n const { config } = useContext(JSONSchemaContext)\n return config\n}\n\nexport const useComponent = (componentName) => {\n const { components } = useContext(JSONSchemaContext)\n return components[componentName] || null\n}\n\nexport const useFn = (fnName = undefined) => {\n const { fn } = useContext(JSONSchemaContext)\n\n return typeof fnName !== \"undefined\" ? fn[fnName] : fn\n}\n\nexport const useLevel = () => {\n const level = useContext(JSONSchemaLevelContext)\n\n return [level, level + 1]\n}\n\nexport const useIsEmbedded = () => {\n const [level] = useLevel()\n\n return level > 0\n}\n\nexport const useIsExpanded = () => {\n const [level] = useLevel()\n const { defaultExpandedLevels } = useConfig()\n\n return defaultExpandedLevels - level > 0\n}\n\nexport const useIsExpandedDeeply = () => {\n return useContext(JSONSchemaDeepExpansionContext)\n}\n\nexport const useRenderedSchemas = (schema = undefined) => {\n if (typeof schema === \"undefined\") {\n return useContext(JSONSchemaCyclesContext)\n }\n\n const renderedSchemas = useContext(JSONSchemaCyclesContext)\n return new Set([...renderedSchemas, schema])\n}\nexport const useIsCircular = (schema) => {\n const renderedSchemas = useRenderedSchemas()\n return renderedSchemas.has(schema)\n}\n","/**\n * @prettier\n */\nimport JSONSchema from \"./components/JSONSchema/JSONSchema\"\nimport Keyword$schema from \"./components/keywords/$schema\"\nimport Keyword$vocabulary from \"./components/keywords/$vocabulary/$vocabulary\"\nimport Keyword$id from \"./components/keywords/$id\"\nimport Keyword$anchor from \"./components/keywords/$anchor\"\nimport Keyword$dynamicAnchor from \"./components/keywords/$dynamicAnchor\"\nimport Keyword$ref from \"./components/keywords/$ref\"\nimport Keyword$dynamicRef from \"./components/keywords/$dynamicRef\"\nimport Keyword$defs from \"./components/keywords/$defs\"\nimport Keyword$comment from \"./components/keywords/$comment\"\nimport KeywordAllOf from \"./components/keywords/AllOf\"\nimport KeywordAnyOf from \"./components/keywords/AnyOf\"\nimport KeywordOneOf from \"./components/keywords/OneOf\"\nimport KeywordNot from \"./components/keywords/Not\"\nimport KeywordIf from \"./components/keywords/If\"\nimport KeywordThen from \"./components/keywords/Then\"\nimport KeywordElse from \"./components/keywords/Else\"\nimport KeywordDependentSchemas from \"./components/keywords/DependentSchemas\"\nimport KeywordPrefixItems from \"./components/keywords/PrefixItems\"\nimport KeywordItems from \"./components/keywords/Items\"\nimport KeywordContains from \"./components/keywords/Contains\"\nimport KeywordProperties from \"./components/keywords/Properties/Properties\"\nimport KeywordPatternProperties from \"./components/keywords/PatternProperties/PatternProperties\"\nimport KeywordAdditionalProperties from \"./components/keywords/AdditionalProperties\"\nimport KeywordPropertyNames from \"./components/keywords/PropertyNames\"\nimport KeywordUnevaluatedItems from \"./components/keywords/UnevaluatedItems\"\nimport KeywordUnevaluatedProperties from \"./components/keywords/UnevaluatedProperties\"\nimport KeywordType from \"./components/keywords/Type\"\nimport KeywordEnum from \"./components/keywords/Enum/Enum\"\nimport KeywordConst from \"./components/keywords/Const\"\nimport KeywordConstraint from \"./components/keywords/Constraint/Constraint\"\nimport KeywordDependentRequired from \"./components/keywords/DependentRequired/DependentRequired\"\nimport KeywordContentSchema from \"./components/keywords/ContentSchema\"\nimport KeywordTitle from \"./components/keywords/Title/Title\"\nimport KeywordDescription from \"./components/keywords/Description/Description\"\nimport KeywordDefault from \"./components/keywords/Default\"\nimport KeywordDeprecated from \"./components/keywords/Deprecated\"\nimport KeywordReadOnly from \"./components/keywords/ReadOnly\"\nimport KeywordWriteOnly from \"./components/keywords/WriteOnly\"\nimport Accordion from \"./components/Accordion/Accordion\"\nimport ExpandDeepButton from \"./components/ExpandDeepButton/ExpandDeepButton\"\nimport ChevronRightIcon from \"./components/icons/ChevronRight\"\nimport { upperFirst, hasKeyword, isExpandable } from \"./fn\"\nimport {\n sampleFromSchema,\n sampleFromSchemaGeneric,\n createXMLExample,\n memoizedSampleFromSchema,\n memoizedCreateXMLExample,\n encoderAPI,\n mediaTypeAPI,\n formatAPI,\n} from \"./samples-extensions/fn/index\"\nimport { JSONSchemaDeepExpansionContext } from \"./context\"\nimport { useFn, useConfig, useComponent, useIsExpandedDeeply } from \"./hooks\"\nimport { withJSONSchemaContext } from \"./hoc\"\n\nconst JSONSchema202012Plugin = () => ({\n components: {\n JSONSchema202012: JSONSchema,\n JSONSchema202012Keyword$schema: Keyword$schema,\n JSONSchema202012Keyword$vocabulary: Keyword$vocabulary,\n JSONSchema202012Keyword$id: Keyword$id,\n JSONSchema202012Keyword$anchor: Keyword$anchor,\n JSONSchema202012Keyword$dynamicAnchor: Keyword$dynamicAnchor,\n JSONSchema202012Keyword$ref: Keyword$ref,\n JSONSchema202012Keyword$dynamicRef: Keyword$dynamicRef,\n JSONSchema202012Keyword$defs: Keyword$defs,\n JSONSchema202012Keyword$comment: Keyword$comment,\n JSONSchema202012KeywordAllOf: KeywordAllOf,\n JSONSchema202012KeywordAnyOf: KeywordAnyOf,\n JSONSchema202012KeywordOneOf: KeywordOneOf,\n JSONSchema202012KeywordNot: KeywordNot,\n JSONSchema202012KeywordIf: KeywordIf,\n JSONSchema202012KeywordThen: KeywordThen,\n JSONSchema202012KeywordElse: KeywordElse,\n JSONSchema202012KeywordDependentSchemas: KeywordDependentSchemas,\n JSONSchema202012KeywordPrefixItems: KeywordPrefixItems,\n JSONSchema202012KeywordItems: KeywordItems,\n JSONSchema202012KeywordContains: KeywordContains,\n JSONSchema202012KeywordProperties: KeywordProperties,\n JSONSchema202012KeywordPatternProperties: KeywordPatternProperties,\n JSONSchema202012KeywordAdditionalProperties: KeywordAdditionalProperties,\n JSONSchema202012KeywordPropertyNames: KeywordPropertyNames,\n JSONSchema202012KeywordUnevaluatedItems: KeywordUnevaluatedItems,\n JSONSchema202012KeywordUnevaluatedProperties: KeywordUnevaluatedProperties,\n JSONSchema202012KeywordType: KeywordType,\n JSONSchema202012KeywordEnum: KeywordEnum,\n JSONSchema202012KeywordConst: KeywordConst,\n JSONSchema202012KeywordConstraint: KeywordConstraint,\n JSONSchema202012KeywordDependentRequired: KeywordDependentRequired,\n JSONSchema202012KeywordContentSchema: KeywordContentSchema,\n JSONSchema202012KeywordTitle: KeywordTitle,\n JSONSchema202012KeywordDescription: KeywordDescription,\n JSONSchema202012KeywordDefault: KeywordDefault,\n JSONSchema202012KeywordDeprecated: KeywordDeprecated,\n JSONSchema202012KeywordReadOnly: KeywordReadOnly,\n JSONSchema202012KeywordWriteOnly: KeywordWriteOnly,\n JSONSchema202012Accordion: Accordion,\n JSONSchema202012ExpandDeepButton: ExpandDeepButton,\n JSONSchema202012ChevronRightIcon: ChevronRightIcon,\n withJSONSchema202012Context: withJSONSchemaContext,\n JSONSchema202012DeepExpansionContext: () => JSONSchemaDeepExpansionContext,\n },\n fn: {\n upperFirst,\n jsonSchema202012: {\n isExpandable,\n hasKeyword,\n useFn,\n useConfig,\n useComponent,\n useIsExpandedDeeply,\n sampleFromSchema,\n sampleFromSchemaGeneric,\n sampleEncoderAPI: encoderAPI,\n sampleFormatAPI: formatAPI,\n sampleMediaTypeAPI: mediaTypeAPI,\n createXMLExample,\n memoizedSampleFromSchema,\n memoizedCreateXMLExample,\n },\n },\n})\n\nexport default JSONSchema202012Plugin\n","/**\n * @prettier\n */\nimport PropTypes from \"prop-types\"\n\nexport const objectSchema = PropTypes.object\n\nexport const booleanSchema = PropTypes.bool\n\nexport const schema = PropTypes.oneOfType([objectSchema, booleanSchema])\n","/**\n * @prettier\n */\n\nimport EncoderRegistry from \"core/plugins/json-schema-2020-12/samples-extensions/fn/class/EncoderRegistry\"\n\nconst registry = new EncoderRegistry()\n\nconst encoderAPI = (encodingName, encoder) => {\n if (typeof encoder === \"function\") {\n return registry.register(encodingName, encoder)\n } else if (encoder === null) {\n return registry.unregister(encodingName)\n }\n\n return registry.get(encodingName)\n}\nencoderAPI.getDefaults = () => registry.defaults\n\nexport default encoderAPI\n","/**\n * @prettier\n */\n\nimport Registry from \"../class/Registry\"\n\nconst registry = new Registry()\n\nconst formatAPI = (format, generator) => {\n if (typeof generator === \"function\") {\n return registry.register(format, generator)\n } else if (generator === null) {\n return registry.unregister(format)\n }\n\n return registry.get(format)\n}\n\nexport default formatAPI\n","/**\n * @prettier\n */\n\nimport MediaTypeRegistry from \"../class/MediaTypeRegistry\"\n\nconst registry = new MediaTypeRegistry()\n\nconst mediaTypeAPI = (mediaType, generator) => {\n if (typeof generator === \"function\") {\n return registry.register(mediaType, generator)\n } else if (generator === null) {\n return registry.unregister(mediaType)\n }\n\n const mediaTypeNoParams = mediaType.split(\";\").at(0)\n const topLevelMediaType = `${mediaTypeNoParams.split(\"/\").at(0)}/*`\n\n return (\n registry.get(mediaType) ||\n registry.get(mediaTypeNoParams) ||\n registry.get(topLevelMediaType)\n )\n}\nmediaTypeAPI.getDefaults = () => registry.defaults\n\nexport default mediaTypeAPI\n","/**\n * @prettier\n */\nimport Registry from \"./Registry\"\nimport encode7bit from \"../encoders/7bit\"\nimport encode8bit from \"../encoders/8bit\"\nimport encodeBinary from \"../encoders/binary\"\nimport encodeQuotedPrintable from \"../encoders/quoted-printable\"\nimport encodeBase16 from \"../encoders/base16\"\nimport encodeBase32 from \"../encoders/base32\"\nimport encodeBase64 from \"../encoders/base64\"\n\nclass EncoderRegistry extends Registry {\n #defaults = {\n \"7bit\": encode7bit,\n \"8bit\": encode8bit,\n binary: encodeBinary,\n \"quoted-printable\": encodeQuotedPrintable,\n base16: encodeBase16,\n base32: encodeBase32,\n base64: encodeBase64,\n }\n\n data = { ...this.#defaults }\n\n get defaults() {\n return { ...this.#defaults }\n }\n}\n\nexport default EncoderRegistry\n","/**\n * @prettier\n */\nimport Registry from \"./Registry\"\nimport textMediaTypesGenerators from \"../generators/media-types/text\"\nimport imageMediaTypesGenerators from \"../generators/media-types/image\"\nimport audioMediaTypesGenerators from \"../generators/media-types/audio\"\nimport videoMediaTypesGenerators from \"../generators/media-types/video\"\nimport applicationMediaTypesGenerators from \"../generators/media-types/application\"\n\nclass MediaTypeRegistry extends Registry {\n #defaults = {\n ...textMediaTypesGenerators,\n ...imageMediaTypesGenerators,\n ...audioMediaTypesGenerators,\n ...videoMediaTypesGenerators,\n ...applicationMediaTypesGenerators,\n }\n\n data = { ...this.#defaults }\n\n get defaults() {\n return { ...this.#defaults }\n }\n}\n\nexport default MediaTypeRegistry\n","/**\n * @prettier\n */\nclass Registry {\n data = {}\n\n register(name, value) {\n this.data[name] = value\n }\n\n unregister(name) {\n if (typeof name === \"undefined\") {\n this.data = {}\n } else {\n delete this.data[name]\n }\n }\n\n get(name) {\n return this.data[name]\n }\n}\n\nexport default Registry\n","/**\n * @prettier\n */\nexport const SCALAR_TYPES = [\"number\", \"integer\", \"string\", \"boolean\", \"null\"]\n\nexport const ALL_TYPES = [\"array\", \"object\", ...SCALAR_TYPES]\n","/**\n * @prettier\n */\nimport { isJSONSchemaObject } from \"./predicates\"\n\n/**\n * Precedence of keywords that provides author defined values (top of the list = higher priority)\n *\n * ### examples\n * Array containing example values for the item defined by the schema.\n * Not guaranteed to be valid or invalid against the schema\n *\n * ### default\n * Default value for an item defined by the schema.\n * Is expected to be a valid instance of the schema.\n *\n * ### example\n * Deprecated. Part of OpenAPI 3.1.0 Schema Object dialect.\n * Represents single example. Equivalent of `examples` keywords\n * with single item.\n */\n\nexport const hasExample = (schema) => {\n if (!isJSONSchemaObject(schema)) return false\n\n const { examples, example, default: defaultVal } = schema\n\n if (Array.isArray(examples) && examples.length >= 1) {\n return true\n }\n\n if (typeof defaultVal !== \"undefined\") {\n return true\n }\n\n return typeof example !== \"undefined\"\n}\n\nexport const extractExample = (schema) => {\n if (!isJSONSchemaObject(schema)) return null\n\n const { examples, example, default: defaultVal } = schema\n\n if (Array.isArray(examples) && examples.length >= 1) {\n return examples.at(0)\n }\n\n if (typeof defaultVal !== \"undefined\") {\n return defaultVal\n }\n\n if (typeof example !== \"undefined\") {\n return example\n }\n\n return undefined\n}\n","/**\n * @prettier\n */\nimport { normalizeArray as ensureArray } from \"core/utils\"\nimport { isBooleanJSONSchema, isJSONSchema } from \"./predicates\"\n\nconst merge = (target, source, config = {}) => {\n if (isBooleanJSONSchema(target) && target === true) return true\n if (isBooleanJSONSchema(target) && target === false) return false\n if (isBooleanJSONSchema(source) && source === true) return true\n if (isBooleanJSONSchema(source) && source === false) return false\n\n if (!isJSONSchema(target)) return source\n if (!isJSONSchema(source)) return target\n\n /**\n * Merging properties from the source object into the target object\n * only if they do not already exist in the target object.\n */\n const merged = { ...source, ...target }\n\n // merging the type keyword\n if (source.type && target.type) {\n if (Array.isArray(source.type) && typeof source.type === \"string\") {\n const mergedType = ensureArray(source.type).concat(target.type)\n merged.type = Array.from(new Set(mergedType))\n }\n }\n\n // merging required keyword\n if (Array.isArray(source.required) && Array.isArray(target.required)) {\n merged.required = [...new Set([...target.required, ...source.required])]\n }\n\n // merging properties keyword\n if (source.properties && target.properties) {\n const allPropertyNames = new Set([\n ...Object.keys(source.properties),\n ...Object.keys(target.properties),\n ])\n\n merged.properties = {}\n for (const name of allPropertyNames) {\n const sourceProperty = source.properties[name] || {}\n const targetProperty = target.properties[name] || {}\n\n if (\n (sourceProperty.readOnly && !config.includeReadOnly) ||\n (sourceProperty.writeOnly && !config.includeWriteOnly)\n ) {\n merged.required = (merged.required || []).filter((p) => p !== name)\n } else {\n merged.properties[name] = merge(targetProperty, sourceProperty, config)\n }\n }\n }\n\n // merging items keyword\n if (isJSONSchema(source.items) && isJSONSchema(target.items)) {\n merged.items = merge(target.items, source.items, config)\n }\n\n // merging contains keyword\n if (isJSONSchema(source.contains) && isJSONSchema(target.contains)) {\n merged.contains = merge(target.contains, source.contains, config)\n }\n\n // merging contentSchema keyword\n if (\n isJSONSchema(source.contentSchema) &&\n isJSONSchema(target.contentSchema)\n ) {\n merged.contentSchema = merge(\n target.contentSchema,\n source.contentSchema,\n config\n )\n }\n\n return merged\n}\n\nexport default merge\n","/**\n * @prettier\n */\nimport isPlainObject from \"lodash/isPlainObject\"\n\nexport const isBooleanJSONSchema = (schema) => {\n return typeof schema === \"boolean\"\n}\n\nexport const isJSONSchemaObject = (schema) => {\n return isPlainObject(schema)\n}\n\nexport const isJSONSchema = (schema) => {\n return isBooleanJSONSchema(schema) || isJSONSchemaObject(schema)\n}\n","/**\n * @prettier\n */\nimport randomBytes from \"randombytes\"\nimport RandExp from \"randexp\"\n\n/**\n * Some of the functions returns constants. This is due to the nature\n * of SwaggerUI expectations - provide as stable data as possible.\n *\n * In future, we may decide to randomize these function and provide\n * true random values.\n */\n\nexport const bytes = (length) => randomBytes(length)\n\nexport const randexp = (pattern) => {\n try {\n const randexpInstance = new RandExp(pattern)\n return randexpInstance.gen()\n } catch {\n // invalid regex should not cause a crash (regex syntax varies across languages)\n return \"string\"\n }\n}\n\nexport const pick = (list) => {\n return list.at(0)\n}\n\nexport const string = () => \"string\"\n\nexport const number = () => 0\n\nexport const integer = () => 0\n","/**\n * @prettier\n */\nimport { ALL_TYPES } from \"./constants\"\nimport { isJSONSchemaObject } from \"./predicates\"\nimport { pick as randomPick } from \"./random\"\nimport { hasExample, extractExample } from \"./example\"\n\nconst inferringKeywords = {\n array: [\n \"items\",\n \"prefixItems\",\n \"contains\",\n \"maxContains\",\n \"minContains\",\n \"maxItems\",\n \"minItems\",\n \"uniqueItems\",\n \"unevaluatedItems\",\n ],\n object: [\n \"properties\",\n \"additionalProperties\",\n \"patternProperties\",\n \"propertyNames\",\n \"minProperties\",\n \"maxProperties\",\n \"required\",\n \"dependentSchemas\",\n \"dependentRequired\",\n \"unevaluatedProperties\",\n ],\n string: [\n \"pattern\",\n \"format\",\n \"minLength\",\n \"maxLength\",\n \"contentEncoding\",\n \"contentMediaType\",\n \"contentSchema\",\n ],\n integer: [\n \"minimum\",\n \"maximum\",\n \"exclusiveMinimum\",\n \"exclusiveMaximum\",\n \"multipleOf\",\n ],\n}\ninferringKeywords.number = inferringKeywords.integer\n\nconst fallbackType = \"string\"\n\nconst inferTypeFromValue = (value) => {\n if (typeof value === \"undefined\") return null\n if (value === null) return \"null\"\n if (Array.isArray(value)) return \"array\"\n if (Number.isInteger(value)) return \"integer\"\n\n return typeof value\n}\n\nexport const foldType = (type) => {\n if (Array.isArray(type) && type.length >= 1) {\n if (type.includes(\"array\")) {\n return \"array\"\n } else if (type.includes(\"object\")) {\n return \"object\"\n } else {\n const pickedType = randomPick(type)\n if (ALL_TYPES.includes(pickedType)) {\n return pickedType\n }\n }\n }\n\n if (ALL_TYPES.includes(type)) {\n return type\n }\n\n return null\n}\n\nexport const inferType = (schema, processedSchemas = new WeakSet()) => {\n if (!isJSONSchemaObject(schema)) return fallbackType\n if (processedSchemas.has(schema)) return fallbackType\n\n processedSchemas.add(schema)\n\n let { type, const: constant } = schema\n type = foldType(type)\n\n // inferring type from inferring keywords\n if (typeof type !== \"string\") {\n const inferringTypes = Object.keys(inferringKeywords)\n\n interrupt: for (let i = 0; i < inferringTypes.length; i += 1) {\n const inferringType = inferringTypes[i]\n const inferringTypeKeywords = inferringKeywords[inferringType]\n\n for (let j = 0; j < inferringTypeKeywords.length; j += 1) {\n const inferringKeyword = inferringTypeKeywords[j]\n if (Object.hasOwn(schema, inferringKeyword)) {\n type = inferringType\n break interrupt\n }\n }\n }\n }\n\n // inferring type from const keyword\n if (typeof type !== \"string\" && typeof constant !== \"undefined\") {\n const constType = inferTypeFromValue(constant)\n type = typeof constType === \"string\" ? constType : type\n }\n\n // inferring type from combining schemas\n if (typeof type !== \"string\") {\n const combineTypes = (keyword) => {\n if (Array.isArray(schema[keyword])) {\n const combinedTypes = schema[keyword].map((subSchema) =>\n inferType(subSchema, processedSchemas)\n )\n return foldType(combinedTypes)\n }\n return null\n }\n\n const allOf = combineTypes(\"allOf\")\n const anyOf = combineTypes(\"anyOf\")\n const oneOf = combineTypes(\"oneOf\")\n const not = schema.not ? inferType(schema.not, processedSchemas) : null\n\n if (allOf || anyOf || oneOf || not) {\n type = foldType([allOf, anyOf, oneOf, not].filter(Boolean))\n }\n }\n\n // inferring type from example\n if (typeof type !== \"string\" && hasExample(schema)) {\n const example = extractExample(schema)\n const exampleType = inferTypeFromValue(example)\n type = typeof exampleType === \"string\" ? exampleType : type\n }\n\n processedSchemas.delete(schema)\n\n return type || fallbackType\n}\n\nexport const getType = (schema) => {\n return inferType(schema)\n}\n","/**\n * @prettier\n */\nimport { isBooleanJSONSchema, isJSONSchemaObject } from \"./predicates\"\n\nexport const fromJSONBooleanSchema = (schema) => {\n if (schema === false) {\n return { not: {} }\n }\n\n return {}\n}\n\nexport const typeCast = (schema) => {\n if (isBooleanJSONSchema(schema)) {\n return fromJSONBooleanSchema(schema)\n }\n if (!isJSONSchemaObject(schema)) {\n return {}\n }\n\n return schema\n}\n","/**\n * @prettier\n */\nconst encode7bit = (content) => Buffer.from(content).toString(\"ascii\")\n\nexport default encode7bit\n","/**\n * @prettier\n */\nconst encode8bit = (content) => Buffer.from(content).toString(\"utf8\")\n\nexport default encode8bit\n","/**\n * @prettier\n */\nconst encodeBase16 = (content) => Buffer.from(content).toString(\"hex\")\n\nexport default encodeBase16\n","/**\n * @prettier\n */\nconst encodeBase32 = (content) => {\n const utf8Value = Buffer.from(content).toString(\"utf8\")\n const base32Alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\"\n let paddingCount = 0\n let base32Str = \"\"\n let buffer = 0\n let bufferLength = 0\n\n for (let i = 0; i < utf8Value.length; i++) {\n buffer = (buffer << 8) | utf8Value.charCodeAt(i)\n bufferLength += 8\n\n while (bufferLength >= 5) {\n base32Str += base32Alphabet.charAt((buffer >>> (bufferLength - 5)) & 31)\n bufferLength -= 5\n }\n }\n\n if (bufferLength > 0) {\n base32Str += base32Alphabet.charAt((buffer << (5 - bufferLength)) & 31)\n paddingCount = (8 - ((utf8Value.length * 8) % 5)) % 5\n }\n\n for (let i = 0; i < paddingCount; i++) {\n base32Str += \"=\"\n }\n\n return base32Str\n}\n\nexport default encodeBase32\n","/**\n * @prettier\n */\nconst encodeBase64 = (content) => Buffer.from(content).toString(\"base64\")\n\nexport default encodeBase64\n","/**\n * @prettier\n */\nconst encodeBinary = (content) => Buffer.from(content).toString(\"binary\")\n\nexport default encodeBinary\n","/**\n * @prettier\n */\nconst encodeQuotedPrintable = (content) => {\n let quotedPrintable = \"\"\n\n for (let i = 0; i < content.length; i++) {\n const charCode = content.charCodeAt(i)\n\n if (charCode === 61) {\n // ASCII content of \"=\"\n quotedPrintable += \"=3D\"\n } else if (\n (charCode >= 33 && charCode <= 60) ||\n (charCode >= 62 && charCode <= 126) ||\n charCode === 9 ||\n charCode === 32\n ) {\n quotedPrintable += content.charAt(i)\n } else if (charCode === 13 || charCode === 10) {\n quotedPrintable += \"\\r\\n\"\n } else if (charCode > 126) {\n // convert non-ASCII characters to UTF-8 and encode each byte\n const utf8 = unescape(encodeURIComponent(content.charAt(i)))\n for (let j = 0; j < utf8.length; j++) {\n quotedPrintable +=\n \"=\" + (\"0\" + utf8.charCodeAt(j).toString(16)).slice(-2).toUpperCase()\n }\n } else {\n quotedPrintable +=\n \"=\" + (\"0\" + charCode.toString(16)).slice(-2).toUpperCase()\n }\n }\n\n return quotedPrintable\n}\n\nexport default encodeQuotedPrintable\n","/**\n * @prettier\n */\nconst dateTimeGenerator = () => new Date().toISOString()\n\nexport default dateTimeGenerator\n","/**\n * @prettier\n */\nconst dateGenerator = () => new Date().toISOString().substring(0, 10)\n\nexport default dateGenerator\n","/**\n * @prettier\n */\nconst doubleGenerator = () => 0.1\n\nexport default doubleGenerator\n","/**\n * @prettier\n */\nconst durationGenerator = () => \"P3D\" // expresses a duration of 3 days\n\nexport default durationGenerator\n","/**\n * @prettier\n */\nconst emailGenerator = () => \"user@example.com\"\n\nexport default emailGenerator\n","/**\n * @prettier\n */\nconst floatGenerator = () => 0.1\n\nexport default floatGenerator\n","/**\n * @prettier\n */\nconst hostnameGenerator = () => \"example.com\"\n\nexport default hostnameGenerator\n","/**\n * @prettier\n */\nconst idnEmailGenerator = () => \"실례@example.com\"\n\nexport default idnEmailGenerator\n","/**\n * @prettier\n */\nconst idnHostnameGenerator = () => \"실례.com\"\n\nexport default idnHostnameGenerator\n","/**\n * @prettier\n */\nconst int32Generator = () => (2 ** 30) >>> 0\n\nexport default int32Generator\n","/**\n * @prettier\n */\nconst int64Generator = () => 2 ** 53 - 1\n\nexport default int64Generator\n","/**\n * @prettier\n */\nconst ipv4Generator = () => \"198.51.100.42\"\n\nexport default ipv4Generator\n","/**\n * @prettier\n */\nconst ipv6Generator = () => \"2001:0db8:5b96:0000:0000:426f:8e17:642a\"\n\nexport default ipv6Generator\n","/**\n * @prettier\n */\nconst iriReferenceGenerator = () => \"path/실례.html\"\n\nexport default iriReferenceGenerator\n","/**\n * @prettier\n */\nconst iriGenerator = () => \"https://실례.com/\"\n\nexport default iriGenerator\n","/**\n * @prettier\n */\nconst jsonPointerGenerator = () => \"/a/b/c\"\n\nexport default jsonPointerGenerator\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_string_raw_bd16f4a0__[\"default\"] });","/**\n * @prettier\n */\nimport { bytes } from \"../../core/random\"\n\n// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\nconst applicationMediaTypesGenerators = {\n \"application/json\": () => '{\"key\":\"value\"}',\n \"application/ld+json\": () => '{\"name\": \"John Doe\"}',\n \"application/x-httpd-php\": () => \"Hello World!

    '; ?>\",\n \"application/rtf\": () => String.raw`{\\rtf1\\adeflang1025\\ansi\\ansicpg1252\\uc1`,\n \"application/x-sh\": () => 'echo \"Hello World!\"',\n \"application/xhtml+xml\": () => \"

    content

    \",\n \"application/*\": () => bytes(25).toString(\"binary\"),\n}\n\nexport default applicationMediaTypesGenerators\n","/**\n * @prettier\n */\nimport { bytes } from \"../../core/random\"\n\nconst audioMediaTypesGenerators = {\n \"audio/*\": () => bytes(25).toString(\"binary\"),\n}\n\nexport default audioMediaTypesGenerators\n","/**\n * @prettier\n */\nimport { bytes } from \"../../core/random\"\n\nconst imageMediaTypesGenerators = {\n \"image/*\": () => bytes(25).toString(\"binary\"),\n}\n\nexport default imageMediaTypesGenerators\n","/**\n * @prettier\n */\n\n// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\nconst textMediaTypesGenerators = {\n \"text/plain\": () => \"string\",\n \"text/css\": () => \".selector { border: 1px solid red }\",\n \"text/csv\": () => \"value1,value2,value3\",\n \"text/html\": () => \"

    content

    \",\n \"text/calendar\": () => \"BEGIN:VCALENDAR\",\n \"text/javascript\": () => \"console.dir('Hello world!');\",\n \"text/xml\": () => 'John Doe',\n \"text/*\": () => \"string\",\n}\n\nexport default textMediaTypesGenerators\n","/**\n * @prettier\n */\nimport { bytes } from \"../../core/random\"\n\nconst videoMediaTypesGenerators = {\n \"video/*\": () => bytes(25).toString(\"binary\"),\n}\n\nexport default videoMediaTypesGenerators\n","/**\n * @prettier\n */\nconst passwordGenerator = () => \"********\"\n\nexport default passwordGenerator\n","/**\n * @prettier\n */\nconst regexGenerator = () => \"^[a-z]+$\"\n\nexport default regexGenerator\n","/**\n * @prettier\n */\nconst relativeJsonPointerGenerator = () => \"1/0\"\n\nexport default relativeJsonPointerGenerator\n","/**\n * @prettier\n */\nconst timeGenerator = () => new Date().toISOString().substring(11)\n\nexport default timeGenerator\n","/**\n * @prettier\n */\nconst uriReferenceGenerator = () => \"path/index.html\"\n\nexport default uriReferenceGenerator\n","/**\n * @prettier\n */\nconst uriTemplateGenerator = () =>\n \"https://example.com/dictionary/{term:1}/{term}\"\n\nexport default uriTemplateGenerator\n","/**\n * @prettier\n */\nconst uriGenerator = () => \"https://example.com/\"\n\nexport default uriGenerator\n","/**\n * @prettier\n */\nconst uuidGenerator = () => \"3fa85f64-5717-4562-b3fc-2c963f66afa6\"\n\nexport default uuidGenerator\n","/**\n * @prettier\n */\nimport XML from \"xml\"\nimport isEmpty from \"lodash/isEmpty\"\nimport isPlainObject from \"lodash/isPlainObject\"\n\nimport { objectify, normalizeArray } from \"core/utils\"\nimport memoizeN from \"../../../../../helpers/memoizeN\"\nimport typeMap from \"./types/index\"\nimport { getType } from \"./core/type\"\nimport { typeCast } from \"./core/utils\"\nimport { hasExample, extractExample } from \"./core/example\"\nimport { pick as randomPick } from \"./core/random\"\nimport merge from \"./core/merge\"\nimport { isBooleanJSONSchema, isJSONSchemaObject } from \"./core/predicates\"\n\nexport const sampleFromSchemaGeneric = (\n schema,\n config = {},\n exampleOverride = undefined,\n respectXML = false\n) => {\n if (typeof schema?.toJS === \"function\") schema = schema.toJS()\n schema = typeCast(schema)\n\n let usePlainValue = exampleOverride !== undefined || hasExample(schema)\n // first check if there is the need of combining this schema with others required by allOf\n const hasOneOf =\n !usePlainValue && Array.isArray(schema.oneOf) && schema.oneOf.length > 0\n const hasAnyOf =\n !usePlainValue && Array.isArray(schema.anyOf) && schema.anyOf.length > 0\n if (!usePlainValue && (hasOneOf || hasAnyOf)) {\n const schemaToAdd = typeCast(\n hasOneOf ? randomPick(schema.oneOf) : randomPick(schema.anyOf)\n )\n schema = merge(schema, schemaToAdd, config)\n if (!schema.xml && schemaToAdd.xml) {\n schema.xml = schemaToAdd.xml\n }\n if (hasExample(schema) && hasExample(schemaToAdd)) {\n usePlainValue = true\n }\n }\n const _attr = {}\n let { xml, properties, additionalProperties, items, contains } = schema || {}\n let type = getType(schema)\n let { includeReadOnly, includeWriteOnly } = config\n xml = xml || {}\n let { name, prefix, namespace } = xml\n let displayName\n let res = {}\n\n if (!Object.hasOwn(schema, \"type\")) {\n schema.type = type\n }\n\n // set xml naming and attributes\n if (respectXML) {\n name = name || \"notagname\"\n // add prefix to name if exists\n displayName = (prefix ? `${prefix}:` : \"\") + name\n if (namespace) {\n //add prefix to namespace if exists\n let namespacePrefix = prefix ? `xmlns:${prefix}` : \"xmlns\"\n _attr[namespacePrefix] = namespace\n }\n }\n\n // init xml default response sample obj\n if (respectXML) {\n res[displayName] = []\n }\n\n // add to result helper init for xml or json\n const props = objectify(properties)\n let addPropertyToResult\n let propertyAddedCounter = 0\n\n const hasExceededMaxProperties = () =>\n Number.isInteger(schema.maxProperties) &&\n schema.maxProperties > 0 &&\n propertyAddedCounter >= schema.maxProperties\n\n const requiredPropertiesToAdd = () => {\n if (!Array.isArray(schema.required) || schema.required.length === 0) {\n return 0\n }\n let addedCount = 0\n if (respectXML) {\n schema.required.forEach(\n (key) => (addedCount += res[key] === undefined ? 0 : 1)\n )\n } else {\n schema.required.forEach((key) => {\n addedCount +=\n res[displayName]?.find((x) => x[key] !== undefined) === undefined\n ? 0\n : 1\n })\n }\n return schema.required.length - addedCount\n }\n\n const isOptionalProperty = (propName) => {\n if (!Array.isArray(schema.required)) return true\n if (schema.required.length === 0) return true\n\n return !schema.required.includes(propName)\n }\n\n const canAddProperty = (propName) => {\n if (!(Number.isInteger(schema.maxProperties) && schema.maxProperties > 0)) {\n return true\n }\n if (hasExceededMaxProperties()) {\n return false\n }\n if (!isOptionalProperty(propName)) {\n return true\n }\n return (\n schema.maxProperties - propertyAddedCounter - requiredPropertiesToAdd() >\n 0\n )\n }\n\n if (respectXML) {\n addPropertyToResult = (propName, overrideE = undefined) => {\n if (schema && props[propName]) {\n // case it is a xml attribute\n props[propName].xml = props[propName].xml || {}\n\n if (props[propName].xml.attribute) {\n const enumAttrVal = Array.isArray(props[propName].enum)\n ? randomPick(props[propName].enum)\n : undefined\n if (hasExample(props[propName])) {\n _attr[props[propName].xml.name || propName] = extractExample(\n props[propName]\n )\n } else if (enumAttrVal !== undefined) {\n _attr[props[propName].xml.name || propName] = enumAttrVal\n } else {\n const propSchema = typeCast(props[propName])\n const propSchemaType = getType(propSchema)\n const attrName = props[propName].xml.name || propName\n _attr[attrName] = typeMap[propSchemaType](propSchema)\n }\n\n return\n }\n props[propName].xml.name = props[propName].xml.name || propName\n } else if (!props[propName] && additionalProperties !== false) {\n // case only additionalProperty that is not defined in schema\n props[propName] = {\n xml: {\n name: propName,\n },\n }\n }\n\n let t = sampleFromSchemaGeneric(\n props[propName],\n config,\n overrideE,\n respectXML\n )\n if (!canAddProperty(propName)) {\n return\n }\n\n propertyAddedCounter++\n if (Array.isArray(t)) {\n res[displayName] = res[displayName].concat(t)\n } else {\n res[displayName].push(t)\n }\n }\n } else {\n addPropertyToResult = (propName, overrideE) => {\n if (!canAddProperty(propName)) {\n return\n }\n if (\n isPlainObject(schema.discriminator?.mapping) &&\n schema.discriminator.propertyName === propName &&\n typeof schema.$$ref === \"string\"\n ) {\n for (const pair in schema.discriminator.mapping) {\n if (schema.$$ref.search(schema.discriminator.mapping[pair]) !== -1) {\n res[propName] = pair\n break\n }\n }\n } else {\n res[propName] = sampleFromSchemaGeneric(\n props[propName],\n config,\n overrideE,\n respectXML\n )\n }\n propertyAddedCounter++\n }\n }\n\n // check for plain value and if found use it to generate sample from it\n if (usePlainValue) {\n let sample\n if (exampleOverride !== undefined) {\n sample = exampleOverride\n } else {\n sample = extractExample(schema)\n }\n\n // if json just return\n if (!respectXML) {\n // spacial case yaml parser can not know about\n if (typeof sample === \"number\" && type === \"string\") {\n return `${sample}`\n }\n // return if sample does not need any parsing\n if (typeof sample !== \"string\" || type === \"string\") {\n return sample\n }\n // check if sample is parsable or just a plain string\n try {\n return JSON.parse(sample)\n } catch {\n // sample is just plain string return it\n return sample\n }\n }\n\n // generate xml sample recursively for array case\n if (type === \"array\") {\n if (!Array.isArray(sample)) {\n if (typeof sample === \"string\") {\n return sample\n }\n sample = [sample]\n }\n\n let itemSamples = []\n\n if (isJSONSchemaObject(items)) {\n items.xml = items.xml || xml || {}\n items.xml.name = items.xml.name || xml.name\n itemSamples = sample.map((s) =>\n sampleFromSchemaGeneric(items, config, s, respectXML)\n )\n }\n\n if (isJSONSchemaObject(contains)) {\n contains.xml = contains.xml || xml || {}\n contains.xml.name = contains.xml.name || xml.name\n itemSamples = [\n sampleFromSchemaGeneric(contains, config, undefined, respectXML),\n ...itemSamples,\n ]\n }\n\n itemSamples = typeMap.array(schema, { sample: itemSamples })\n if (xml.wrapped) {\n res[displayName] = itemSamples\n if (!isEmpty(_attr)) {\n res[displayName].push({ _attr: _attr })\n }\n } else {\n res = itemSamples\n }\n return res\n }\n\n // generate xml sample recursively for object case\n if (type === \"object\") {\n // case literal example\n if (typeof sample === \"string\") {\n return sample\n }\n for (const propName in sample) {\n if (!Object.hasOwn(sample, propName)) {\n continue\n }\n if (props[propName]?.readOnly && !includeReadOnly) {\n continue\n }\n if (props[propName]?.writeOnly && !includeWriteOnly) {\n continue\n }\n if (props[propName]?.xml?.attribute) {\n _attr[props[propName].xml.name || propName] = sample[propName]\n continue\n }\n addPropertyToResult(propName, sample[propName])\n }\n if (!isEmpty(_attr)) {\n res[displayName].push({ _attr: _attr })\n }\n\n return res\n }\n\n res[displayName] = !isEmpty(_attr) ? [{ _attr: _attr }, sample] : sample\n return res\n }\n\n // use schema to generate sample\n if (type === \"array\") {\n let sampleArray = []\n\n if (isJSONSchemaObject(contains)) {\n if (respectXML) {\n contains.xml = contains.xml || schema.xml || {}\n contains.xml.name = contains.xml.name || xml.name\n }\n\n if (Array.isArray(contains.anyOf)) {\n sampleArray.push(\n ...contains.anyOf.map((anyOfSchema) =>\n sampleFromSchemaGeneric(\n merge(anyOfSchema, contains, config),\n config,\n undefined,\n respectXML\n )\n )\n )\n } else if (Array.isArray(contains.oneOf)) {\n sampleArray.push(\n ...contains.oneOf.map((oneOfSchema) =>\n sampleFromSchemaGeneric(\n merge(oneOfSchema, contains, config),\n config,\n undefined,\n respectXML\n )\n )\n )\n } else if (!respectXML || (respectXML && xml.wrapped)) {\n sampleArray.push(\n sampleFromSchemaGeneric(contains, config, undefined, respectXML)\n )\n } else {\n return sampleFromSchemaGeneric(contains, config, undefined, respectXML)\n }\n }\n\n if (isJSONSchemaObject(items)) {\n if (respectXML) {\n items.xml = items.xml || schema.xml || {}\n items.xml.name = items.xml.name || xml.name\n }\n\n if (Array.isArray(items.anyOf)) {\n sampleArray.push(\n ...items.anyOf.map((i) =>\n sampleFromSchemaGeneric(\n merge(i, items, config),\n config,\n undefined,\n respectXML\n )\n )\n )\n } else if (Array.isArray(items.oneOf)) {\n sampleArray.push(\n ...items.oneOf.map((i) =>\n sampleFromSchemaGeneric(\n merge(i, items, config),\n config,\n undefined,\n respectXML\n )\n )\n )\n } else if (!respectXML || (respectXML && xml.wrapped)) {\n sampleArray.push(\n sampleFromSchemaGeneric(items, config, undefined, respectXML)\n )\n } else {\n return sampleFromSchemaGeneric(items, config, undefined, respectXML)\n }\n }\n\n sampleArray = typeMap.array(schema, { sample: sampleArray })\n if (respectXML && xml.wrapped) {\n res[displayName] = sampleArray\n if (!isEmpty(_attr)) {\n res[displayName].push({ _attr: _attr })\n }\n return res\n }\n\n return sampleArray\n }\n\n if (type === \"object\") {\n for (let propName in props) {\n if (!Object.hasOwn(props, propName)) {\n continue\n }\n if (props[propName]?.deprecated) {\n continue\n }\n if (props[propName]?.readOnly && !includeReadOnly) {\n continue\n }\n if (props[propName]?.writeOnly && !includeWriteOnly) {\n continue\n }\n addPropertyToResult(propName)\n }\n if (respectXML && _attr) {\n res[displayName].push({ _attr: _attr })\n }\n\n if (hasExceededMaxProperties()) {\n return res\n }\n\n if (isBooleanJSONSchema(additionalProperties)) {\n if (respectXML) {\n res[displayName].push({ additionalProp: \"Anything can be here\" })\n } else {\n res.additionalProp1 = {}\n }\n propertyAddedCounter++\n } else if (isJSONSchemaObject(additionalProperties)) {\n const additionalProps = additionalProperties\n const additionalPropSample = sampleFromSchemaGeneric(\n additionalProps,\n config,\n undefined,\n respectXML\n )\n\n if (\n respectXML &&\n typeof additionalProps?.xml?.name === \"string\" &&\n additionalProps?.xml?.name !== \"notagname\"\n ) {\n res[displayName].push(additionalPropSample)\n } else {\n const toGenerateCount =\n Number.isInteger(schema.minProperties) &&\n schema.minProperties > 0 &&\n propertyAddedCounter < schema.minProperties\n ? schema.minProperties - propertyAddedCounter\n : 3\n for (let i = 1; i <= toGenerateCount; i++) {\n if (hasExceededMaxProperties()) {\n return res\n }\n if (respectXML) {\n const temp = {}\n temp[\"additionalProp\" + i] = additionalPropSample[\"notagname\"]\n res[displayName].push(temp)\n } else {\n res[\"additionalProp\" + i] = additionalPropSample\n }\n propertyAddedCounter++\n }\n }\n }\n return res\n }\n\n let value\n if (typeof schema.const !== \"undefined\") {\n // display const value\n value = schema.const\n } else if (schema && Array.isArray(schema.enum)) {\n //display enum first value\n value = randomPick(normalizeArray(schema.enum))\n } else {\n // display schema default\n const contentSample = isJSONSchemaObject(schema.contentSchema)\n ? sampleFromSchemaGeneric(\n schema.contentSchema,\n config,\n undefined,\n respectXML\n )\n : undefined\n value = typeMap[type](schema, { sample: contentSample })\n }\n\n if (respectXML) {\n res[displayName] = !isEmpty(_attr) ? [{ _attr: _attr }, value] : value\n return res\n }\n\n return value\n}\n\nexport const createXMLExample = (schema, config, o) => {\n const json = sampleFromSchemaGeneric(schema, config, o, true)\n if (!json) {\n return\n }\n if (typeof json === \"string\") {\n return json\n }\n return XML(json, { declaration: true, indent: \"\\t\" })\n}\n\nexport const sampleFromSchema = (schema, config, o) => {\n return sampleFromSchemaGeneric(schema, config, o, false)\n}\n\nconst resolver = (arg1, arg2, arg3) => [\n arg1,\n JSON.stringify(arg2),\n JSON.stringify(arg3),\n]\n\nexport const memoizedCreateXMLExample = memoizeN(createXMLExample, resolver)\n\nexport const memoizedSampleFromSchema = memoizeN(sampleFromSchema, resolver)\n","/**\n * @prettier\n */\n\nexport const applyArrayConstraints = (array, constraints = {}) => {\n const { minItems, maxItems, uniqueItems } = constraints\n const { contains, minContains, maxContains } = constraints\n let constrainedArray = [...array]\n\n if (contains != null && typeof contains === \"object\") {\n if (Number.isInteger(minContains) && minContains > 1) {\n const containsItem = constrainedArray.at(0)\n for (let i = 1; i < minContains; i += 1) {\n constrainedArray.unshift(containsItem)\n }\n }\n if (Number.isInteger(maxContains) && maxContains > 0) {\n /**\n * This is noop. `minContains` already generate minimum required\n * number of items that satisfies `contains`. `maxContains` would\n * have no effect.\n */\n }\n }\n\n if (Number.isInteger(maxItems) && maxItems > 0) {\n constrainedArray = array.slice(0, maxItems)\n }\n if (Number.isInteger(minItems) && minItems > 0) {\n for (let i = 0; constrainedArray.length < minItems; i += 1) {\n constrainedArray.push(constrainedArray[i % constrainedArray.length])\n }\n }\n\n if (uniqueItems === true) {\n /**\n * If uniqueItems is true, it implies that every item in the array must be unique.\n * This overrides any minItems constraint that cannot be satisfied with unique items.\n * So if minItems is greater than the number of unique items,\n * it should be reduced to the number of unique items.\n */\n constrainedArray = Array.from(new Set(constrainedArray))\n }\n\n return constrainedArray\n}\n\nconst arrayType = (schema, { sample }) => {\n return applyArrayConstraints(sample, schema)\n}\n\nexport default arrayType\n","/**\n * @prettier\n */\n\nconst booleanType = (schema) => {\n return typeof schema.default === \"boolean\" ? schema.default : true\n}\n\nexport default booleanType\n","/**\n * @prettier\n */\nimport arrayType from \"./array\"\nimport objectType from \"./object\"\nimport stringType from \"./string\"\nimport numberType from \"./number\"\nimport integerType from \"./integer\"\nimport booleanType from \"./boolean\"\nimport nullType from \"./null\"\n\nconst typeMap = {\n array: arrayType,\n object: objectType,\n string: stringType,\n number: numberType,\n integer: integerType,\n boolean: booleanType,\n null: nullType,\n}\n\nexport default new Proxy(typeMap, {\n get(target, prop) {\n if (typeof prop === \"string\" && Object.hasOwn(target, prop)) {\n return target[prop]\n }\n\n return () => `Unknown Type: ${prop}`\n },\n})\n","/**\n * @prettier\n */\nimport { integer as randomInteger } from \"../core/random\"\nimport formatAPI from \"../api/formatAPI\"\nimport int32Generator from \"../generators/int32\"\nimport int64Generator from \"../generators/int64\"\n\nconst generateFormat = (schema) => {\n const { format } = schema\n\n const formatGenerator = formatAPI(format)\n if (typeof formatGenerator === \"function\") {\n return formatGenerator(schema)\n }\n\n switch (format) {\n case \"int32\": {\n return int32Generator()\n }\n case \"int64\": {\n return int64Generator()\n }\n }\n\n return randomInteger()\n}\nconst integerType = (schema) => {\n const { format } = schema\n\n if (typeof format === \"string\") {\n return generateFormat(schema)\n }\n\n return randomInteger()\n}\n\nexport default integerType\n","/**\n * @prettier\n */\n\nconst nullType = () => {\n return null\n}\n\nexport default nullType\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_number_epsilon_c9a81fe6__[\"default\"] });","/**\n * @prettier\n */\nimport { number as randomNumber } from \"../core/random\"\nimport formatAPI from \"../api/formatAPI\"\nimport floatGenerator from \"../generators/float\"\nimport doubleGenerator from \"../generators/double\"\n\nconst generateFormat = (schema) => {\n const { format } = schema\n\n const formatGenerator = formatAPI(format)\n if (typeof formatGenerator === \"function\") {\n return formatGenerator(schema)\n }\n\n switch (format) {\n case \"float\": {\n return floatGenerator()\n }\n case \"double\": {\n return doubleGenerator()\n }\n }\n\n return randomNumber()\n}\n\nconst applyNumberConstraints = (number, constraints = {}) => {\n const { minimum, maximum, exclusiveMinimum, exclusiveMaximum } = constraints\n const { multipleOf } = constraints\n const epsilon = Number.isInteger(number) ? 1 : Number.EPSILON\n let minValue = typeof minimum === \"number\" ? minimum : null\n let maxValue = typeof maximum === \"number\" ? maximum : null\n let constrainedNumber = number\n\n if (typeof exclusiveMinimum === \"number\") {\n minValue =\n minValue !== null\n ? Math.max(minValue, exclusiveMinimum + epsilon)\n : exclusiveMinimum + epsilon\n }\n if (typeof exclusiveMaximum === \"number\") {\n maxValue =\n maxValue !== null\n ? Math.min(maxValue, exclusiveMaximum - epsilon)\n : exclusiveMaximum - epsilon\n }\n constrainedNumber =\n (minValue > maxValue && number) || minValue || maxValue || constrainedNumber\n\n if (typeof multipleOf === \"number\" && multipleOf > 0) {\n const remainder = constrainedNumber % multipleOf\n constrainedNumber =\n remainder === 0\n ? constrainedNumber\n : constrainedNumber + multipleOf - remainder\n }\n\n return constrainedNumber\n}\n\nconst numberType = (schema) => {\n const { format } = schema\n let generatedNumber\n\n if (typeof format === \"string\") {\n generatedNumber = generateFormat(schema)\n } else {\n generatedNumber = randomNumber()\n }\n\n return applyNumberConstraints(generatedNumber, schema)\n}\n\nexport default numberType\n","/**\n * @prettier\n */\n\nconst objectType = () => {\n throw new Error(\"Not implemented\")\n}\n\nexport default objectType\n","/**\n * @prettier\n */\nimport identity from \"lodash/identity\"\n\nimport { string as randomString, randexp } from \"../core/random\"\nimport { isJSONSchema } from \"../core/predicates\"\nimport emailGenerator from \"../generators/email\"\nimport idnEmailGenerator from \"../generators/idn-email\"\nimport hostnameGenerator from \"../generators/hostname\"\nimport idnHostnameGenerator from \"../generators/idn-hostname\"\nimport ipv4Generator from \"../generators/ipv4\"\nimport ipv6Generator from \"../generators/ipv6\"\nimport uriGenerator from \"../generators/uri\"\nimport uriReferenceGenerator from \"../generators/uri-reference\"\nimport iriGenerator from \"../generators/iri\"\nimport iriReferenceGenerator from \"../generators/iri-reference\"\nimport uuidGenerator from \"../generators/uuid\"\nimport uriTemplateGenerator from \"../generators/uri-template\"\nimport jsonPointerGenerator from \"../generators/json-pointer\"\nimport relativeJsonPointerGenerator from \"../generators/relative-json-pointer\"\nimport dateTimeGenerator from \"../generators/date-time\"\nimport dateGenerator from \"../generators/date\"\nimport timeGenerator from \"../generators/time\"\nimport durationGenerator from \"../generators/duration\"\nimport passwordGenerator from \"../generators/password\"\nimport regexGenerator from \"../generators/regex\"\nimport formatAPI from \"../api/formatAPI\"\nimport encoderAPI from \"../api/encoderAPI\"\nimport mediaTypeAPI from \"../api/mediaTypeAPI\"\n\nconst generateFormat = (schema) => {\n const { format } = schema\n\n const formatGenerator = formatAPI(format)\n if (typeof formatGenerator === \"function\") {\n return formatGenerator(schema)\n }\n\n switch (format) {\n case \"email\": {\n return emailGenerator()\n }\n case \"idn-email\": {\n return idnEmailGenerator()\n }\n case \"hostname\": {\n return hostnameGenerator()\n }\n case \"idn-hostname\": {\n return idnHostnameGenerator()\n }\n case \"ipv4\": {\n return ipv4Generator()\n }\n case \"ipv6\": {\n return ipv6Generator()\n }\n case \"uri\": {\n return uriGenerator()\n }\n case \"uri-reference\": {\n return uriReferenceGenerator()\n }\n case \"iri\": {\n return iriGenerator()\n }\n case \"iri-reference\": {\n return iriReferenceGenerator()\n }\n case \"uuid\": {\n return uuidGenerator()\n }\n case \"uri-template\": {\n return uriTemplateGenerator()\n }\n case \"json-pointer\": {\n return jsonPointerGenerator()\n }\n case \"relative-json-pointer\": {\n return relativeJsonPointerGenerator()\n }\n case \"date-time\": {\n return dateTimeGenerator()\n }\n case \"date\": {\n return dateGenerator()\n }\n case \"time\": {\n return timeGenerator()\n }\n case \"duration\": {\n return durationGenerator()\n }\n case \"password\": {\n return passwordGenerator()\n }\n case \"regex\": {\n return regexGenerator()\n }\n }\n\n return randomString()\n}\n\nconst applyStringConstraints = (string, constraints = {}) => {\n const { maxLength, minLength } = constraints\n let constrainedString = string\n\n if (Number.isInteger(maxLength) && maxLength > 0) {\n constrainedString = constrainedString.slice(0, maxLength)\n }\n if (Number.isInteger(minLength) && minLength > 0) {\n let i = 0\n while (constrainedString.length < minLength) {\n constrainedString += constrainedString[i++ % constrainedString.length]\n }\n }\n\n return constrainedString\n}\nconst stringType = (schema, { sample } = {}) => {\n const { contentEncoding, contentMediaType, contentSchema } = schema\n const { pattern, format } = schema\n const encode = encoderAPI(contentEncoding) || identity\n let generatedString\n\n if (typeof pattern === \"string\") {\n generatedString = randexp(pattern)\n } else if (typeof format === \"string\") {\n generatedString = generateFormat(schema)\n } else if (\n isJSONSchema(contentSchema) &&\n typeof contentMediaType === \"string\" &&\n typeof sample !== \"undefined\"\n ) {\n if (Array.isArray(sample) || typeof sample === \"object\") {\n generatedString = JSON.stringify(sample)\n } else {\n generatedString = String(sample)\n }\n } else if (typeof contentMediaType === \"string\") {\n const mediaTypeGenerator = mediaTypeAPI(contentMediaType)\n if (typeof mediaTypeGenerator === \"function\") {\n generatedString = mediaTypeGenerator(schema)\n }\n } else {\n generatedString = randomString()\n }\n\n return encode(applyStringConstraints(generatedString, schema))\n}\n\nexport default stringType\n","import { normalizeArray } from \"core/utils\"\n\nexport const UPDATE_LAYOUT = \"layout_update_layout\"\nexport const UPDATE_FILTER = \"layout_update_filter\"\nexport const UPDATE_MODE = \"layout_update_mode\"\nexport const SHOW = \"layout_show\"\n\n// export const ONLY_SHOW = \"layout_only_show\"\n\nexport function updateLayout(layout) {\n return {\n type: UPDATE_LAYOUT,\n payload: layout\n }\n}\n\nexport function updateFilter(filter) {\n return {\n type: UPDATE_FILTER,\n payload: filter\n }\n}\n\nexport function show(thing, shown=true) {\n thing = normalizeArray(thing)\n return {\n type: SHOW,\n payload: {thing, shown}\n }\n}\n\n// Simple string key-store, used for\nexport function changeMode(thing, mode=\"\") {\n thing = normalizeArray(thing)\n return {\n type: UPDATE_MODE,\n payload: {thing, mode}\n }\n}\n","import reducers from \"./reducers\"\nimport * as actions from \"./actions\"\nimport * as selectors from \"./selectors\"\nimport * as wrapSelectors from \"./spec-extensions/wrap-selector\"\n\nexport default function() {\n return {\n statePlugins: {\n layout: {\n reducers,\n actions,\n selectors\n },\n spec: {\n wrapSelectors\n }\n }\n }\n}\n","import { fromJS } from \"immutable\"\nimport {\n UPDATE_LAYOUT,\n UPDATE_FILTER,\n UPDATE_MODE,\n SHOW\n} from \"./actions\"\n\nexport default {\n\n [UPDATE_LAYOUT]: (state, action) => state.set(\"layout\", action.payload),\n\n [UPDATE_FILTER]: (state, action) => state.set(\"filter\", action.payload),\n\n [SHOW]: (state, action) => {\n const isShown = action.payload.shown\n // This is one way to serialize an array, another (preferred) is to convert to json-pointer\n // TODO: use json-pointer serilization instead of fromJS(...), for performance\n const thingToShow = fromJS(action.payload.thing)\n // This is a map of paths to bools\n // eg: [one, two] => true\n // eg: [one] => false\n return state.update(\"shown\", fromJS({}), a => a.set(thingToShow, isShown))\n },\n\n [UPDATE_MODE]: (state, action) => {\n let thing = action.payload.thing\n let mode = action.payload.mode\n return state.setIn([\"modes\"].concat(thing), (mode || \"\") + \"\")\n }\n\n}\n","import { createSelector } from \"reselect\"\nimport { normalizeArray } from \"core/utils\"\nimport { fromJS } from \"immutable\"\n\nconst state = state => state\n\nexport const current = state => state.get(\"layout\")\n\nexport const currentFilter = state => state.get(\"filter\")\n\nexport const isShown = (state, thing, def) => {\n thing = normalizeArray(thing)\n return state.get(\"shown\", fromJS({})).get(fromJS(thing), def)\n}\n\nexport const whatMode = (state, thing, def=\"\") => {\n thing = normalizeArray(thing)\n return state.getIn([\"modes\", ...thing], def)\n}\n\nexport const showSummary = createSelector(\n state,\n state => !isShown(state, \"editor\")\n)\n","\nexport const taggedOperations = (oriSelector, system) => (state, ...args) => {\n let taggedOps = oriSelector(state, ...args)\n\n const { fn, layoutSelectors, getConfigs } = system.getSystem()\n const configs = getConfigs()\n const { maxDisplayedTags } = configs\n\n // Filter, if requested\n let filter = layoutSelectors.currentFilter()\n if (filter) {\n if (filter !== true && filter !== \"true\" && filter !== \"false\") {\n taggedOps = fn.opsFilter(taggedOps, filter)\n }\n }\n // Limit to [max] items, if specified\n if (maxDisplayedTags && !isNaN(maxDisplayedTags) && maxDisplayedTags >= 0) {\n taggedOps = taggedOps.slice(0, maxDisplayedTags)\n }\n\n return taggedOps\n}\n","export default function ({configs}) {\n\n const levels = {\n \"debug\": 0,\n \"info\": 1,\n \"log\": 2,\n \"warn\": 3,\n \"error\": 4\n }\n\n const getLevel = (level) => levels[level] || -1\n\n let { logLevel } = configs\n let logLevelInt = getLevel(logLevel)\n\n function log(level, ...args) {\n if(getLevel(level) >= logLevelInt)\n // eslint-disable-next-line no-console\n console[level](...args)\n }\n\n log.warn = log.bind(null, \"warn\")\n log.error = log.bind(null, \"error\")\n log.info = log.bind(null, \"info\")\n log.debug = log.bind(null, \"debug\")\n\n return { rootInjects: { log } }\n}\n","// Actions conform to FSA (flux-standard-actions)\n// {type: string,payload: Any|Error, meta: obj, error: bool}\n\nexport const UPDATE_SELECTED_SERVER = \"oas3_set_servers\"\nexport const UPDATE_REQUEST_BODY_VALUE = \"oas3_set_request_body_value\"\nexport const UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG = \"oas3_set_request_body_retain_flag\"\nexport const UPDATE_REQUEST_BODY_INCLUSION = \"oas3_set_request_body_inclusion\"\nexport const UPDATE_ACTIVE_EXAMPLES_MEMBER = \"oas3_set_active_examples_member\"\nexport const UPDATE_REQUEST_CONTENT_TYPE = \"oas3_set_request_content_type\"\nexport const UPDATE_RESPONSE_CONTENT_TYPE = \"oas3_set_response_content_type\"\nexport const UPDATE_SERVER_VARIABLE_VALUE = \"oas3_set_server_variable_value\"\nexport const SET_REQUEST_BODY_VALIDATE_ERROR = \"oas3_set_request_body_validate_error\"\nexport const CLEAR_REQUEST_BODY_VALIDATE_ERROR = \"oas3_clear_request_body_validate_error\"\nexport const CLEAR_REQUEST_BODY_VALUE = \"oas3_clear_request_body_value\"\n\nexport function setSelectedServer (selectedServerUrl, namespace) {\n return {\n type: UPDATE_SELECTED_SERVER,\n payload: {selectedServerUrl, namespace}\n }\n}\n\nexport function setRequestBodyValue ({ value, pathMethod }) {\n return {\n type: UPDATE_REQUEST_BODY_VALUE,\n payload: { value, pathMethod }\n }\n}\n\nexport const setRetainRequestBodyValueFlag = ({ value, pathMethod }) => {\n return {\n type: UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG,\n payload: { value, pathMethod }\n }\n}\n\n\nexport function setRequestBodyInclusion ({ value, pathMethod, name }) {\n return {\n type: UPDATE_REQUEST_BODY_INCLUSION,\n payload: { value, pathMethod, name }\n }\n}\n\nexport function setActiveExamplesMember ({ name, pathMethod, contextType, contextName }) {\n return {\n type: UPDATE_ACTIVE_EXAMPLES_MEMBER,\n payload: { name, pathMethod, contextType, contextName }\n }\n}\n\nexport function setRequestContentType ({ value, pathMethod }) {\n return {\n type: UPDATE_REQUEST_CONTENT_TYPE,\n payload: { value, pathMethod }\n }\n}\n\nexport function setResponseContentType ({ value, path, method }) {\n return {\n type: UPDATE_RESPONSE_CONTENT_TYPE,\n payload: { value, path, method }\n }\n}\n\nexport function setServerVariableValue ({ server, namespace, key, val }) {\n return {\n type: UPDATE_SERVER_VARIABLE_VALUE,\n payload: { server, namespace, key, val }\n }\n}\n\nexport const setRequestBodyValidateError = ({ path, method, validationErrors }) => {\n return {\n type: SET_REQUEST_BODY_VALIDATE_ERROR,\n payload: { path, method, validationErrors }\n }\n}\n\nexport const clearRequestBodyValidateError = ({ path, method }) => {\n return {\n type: CLEAR_REQUEST_BODY_VALIDATE_ERROR,\n payload: { path, method }\n }\n}\n\nexport const initRequestBodyValidateError = ({ pathMethod } ) => {\n return {\n type: CLEAR_REQUEST_BODY_VALIDATE_ERROR,\n payload: { path: pathMethod[0], method: pathMethod[1] }\n }\n}\n\nexport const clearRequestBodyValue = ({ pathMethod }) => {\n return {\n type: CLEAR_REQUEST_BODY_VALUE,\n payload: { pathMethod }\n }\n}\n","import { createSelector } from \"reselect\"\nimport { List, Map, fromJS } from \"immutable\"\n\n\n// Helpers\n\nconst state = state => state\n\nfunction onlyOAS3(selector) {\n return (ori, system) => (...args) => {\n if(system.getSystem().specSelectors.isOAS3()) {\n // Pass the spec plugin state to Reselect to trigger on securityDefinitions update\n let resolvedSchemes = system.getState().getIn([\"spec\", \"resolvedSubtrees\",\n \"components\", \"securitySchemes\"])\n return selector(system, resolvedSchemes, ...args)\n } else {\n return ori(...args)\n }\n }\n}\n\nexport const definitionsToAuthorize = onlyOAS3(createSelector(\n state,\n ({specSelectors}) => specSelectors.securityDefinitions(),\n (system, definitions) => {\n // Coerce our OpenAPI 3.0 definitions into monoflow definitions\n // that look like Swagger2 definitions.\n let list = List()\n\n if(!definitions) {\n return list\n }\n\n definitions.entrySeq().forEach( ([ defName, definition ]) => {\n const type = definition.get(\"type\")\n\n if(type === \"oauth2\") {\n definition.get(\"flows\").entrySeq().forEach(([flowKey, flowVal]) => {\n let translatedDef = fromJS({\n flow: flowKey,\n authorizationUrl: flowVal.get(\"authorizationUrl\"),\n tokenUrl: flowVal.get(\"tokenUrl\"),\n scopes: flowVal.get(\"scopes\"),\n type: definition.get(\"type\"),\n description: definition.get(\"description\")\n })\n\n list = list.push(new Map({\n [defName]: translatedDef.filter((v) => {\n // filter out unset values, sometimes `authorizationUrl`\n // and `tokenUrl` come out as `undefined` in the data\n return v !== undefined\n })\n }))\n })\n }\n if(type === \"http\" || type === \"apiKey\") {\n list = list.push(new Map({\n [defName]: definition\n }))\n }\n if(type === \"openIdConnect\" && definition.get(\"openIdConnectData\")) {\n let oidcData = definition.get(\"openIdConnectData\")\n let grants = oidcData.get(\"grant_types_supported\") || [\"authorization_code\", \"implicit\"]\n grants.forEach((grant) => {\n // Convert from OIDC list of scopes to the OAS-style map with empty descriptions\n let translatedScopes = oidcData.get(\"scopes_supported\") &&\n oidcData.get(\"scopes_supported\").reduce((acc, cur) => acc.set(cur, \"\"), new Map())\n\n let translatedDef = fromJS({\n flow: grant,\n authorizationUrl: oidcData.get(\"authorization_endpoint\"),\n tokenUrl: oidcData.get(\"token_endpoint\"),\n scopes: translatedScopes,\n type: \"oauth2\",\n openIdConnectUrl: definition.get(\"openIdConnectUrl\")\n })\n\n list = list.push(new Map({\n [defName]: translatedDef.filter((v) => {\n // filter out unset values, sometimes `authorizationUrl`\n // and `tokenUrl` come out as `undefined` in the data\n return v !== undefined\n })\n }))\n })\n }\n })\n\n return list\n }\n))\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nconst Callbacks = ({ callbacks, specPath, specSelectors, getComponent }) => {\n const operationDTOs = specSelectors.callbacksOperations({\n callbacks,\n specPath,\n })\n const callbackNames = Object.keys(operationDTOs)\n\n const OperationContainer = getComponent(\"OperationContainer\", true)\n\n if (callbackNames.length === 0) return No callbacks\n\n return (\n
    \n {callbackNames.map((callbackName) => (\n
    \n

    {callbackName}

    \n\n {operationDTOs[callbackName].map((operationDTO) => (\n \n ))}\n
    \n ))}\n
    \n )\n}\n\nCallbacks.propTypes = {\n getComponent: PropTypes.func.isRequired,\n specSelectors: PropTypes.shape({\n callbacksOperations: PropTypes.func.isRequired,\n }).isRequired,\n callbacks: ImPropTypes.iterable.isRequired,\n specPath: ImPropTypes.list.isRequired,\n}\n\nexport default Callbacks\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class HttpAuth extends React.Component {\n static propTypes = {\n authorized: PropTypes.object,\n getComponent: PropTypes.func.isRequired,\n errSelectors: PropTypes.object.isRequired,\n schema: PropTypes.object.isRequired,\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func\n }\n\n constructor(props, context) {\n super(props, context)\n let { name, schema } = this.props\n let value = this.getValue()\n\n this.state = {\n name: name,\n schema: schema,\n value: value\n }\n }\n\n getValue () {\n let { name, authorized } = this.props\n\n return authorized && authorized.getIn([name, \"value\"])\n }\n\n onChange =(e) => {\n let { onChange } = this.props\n let { value, name } = e.target\n\n let newValue = Object.assign({}, this.state.value)\n\n if(name) {\n newValue[name] = value\n } else {\n newValue = value\n }\n\n this.setState({ value: newValue }, () => onChange(this.state))\n\n }\n\n render() {\n let { schema, getComponent, errSelectors, name } = this.props\n const Input = getComponent(\"Input\")\n const Row = getComponent(\"Row\")\n const Col = getComponent(\"Col\")\n const AuthError = getComponent(\"authError\")\n const Markdown = getComponent(\"Markdown\", true)\n const JumpToPath = getComponent(\"JumpToPath\", true)\n\n const scheme = (schema.get(\"scheme\") || \"\").toLowerCase()\n let value = this.getValue()\n let errors = errSelectors.allErrors().filter( err => err.get(\"authId\") === name)\n\n if(scheme === \"basic\") {\n let username = value ? value.get(\"username\") : null\n return
    \n

    \n { name || schema.get(\"name\") } \n (http, Basic)\n \n

    \n { username &&
    Authorized
    }\n \n \n \n \n \n {\n username ? { username } \n : \n }\n \n \n \n {\n username ? ****** \n : \n }\n \n {\n errors.valueSeq().map( (error, key) => {\n return \n } )\n }\n
    \n }\n\n if(scheme === \"bearer\") {\n return (\n
    \n

    \n { name || schema.get(\"name\") } \n (http, Bearer)\n \n

    \n { value &&
    Authorized
    }\n \n \n \n \n \n {\n value ? ****** \n : \n }\n \n {\n errors.valueSeq().map( (error, key) => {\n return \n } )\n }\n
    \n )\n }\n return
    \n {name} HTTP authentication: unsupported scheme {`'${scheme}'`}\n
    \n }\n}\n","import Callbacks from \"./callbacks\"\nimport RequestBody from \"./request-body\"\nimport OperationLink from \"./operation-link\"\nimport Servers from \"./servers\"\nimport ServersContainer from \"./servers-container\"\nimport RequestBodyEditor from \"./request-body-editor\"\nimport HttpAuth from \"./http-auth\"\nimport OperationServers from \"./operation-servers\"\n\nexport default {\n Callbacks,\n HttpAuth,\n RequestBody,\n Servers,\n ServersContainer,\n RequestBodyEditor,\n OperationServers,\n operationLink: OperationLink,\n}\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nclass OperationLink extends Component {\n render() {\n const { link, name, getComponent } = this.props\n\n const Markdown = getComponent(\"Markdown\", true)\n\n let targetOp = link.get(\"operationId\") || link.get(\"operationRef\")\n let parameters = link.get(\"parameters\") && link.get(\"parameters\").toJS()\n let description = link.get(\"description\")\n\n return
    \n
    \n {name}\n { description ? : null }\n
    \n
    \n        Operation `{targetOp}`

    \n Parameters {padString(0, JSON.stringify(parameters, null, 2)) || \"{}\"}
    \n
    \n
    \n }\n\n}\n\nfunction padString(n, string) {\n if(typeof string !== \"string\") { return \"\" }\n return string\n .split(\"\\n\")\n .map((line, i) => i > 0 ? Array(n + 1).join(\" \") + line : line)\n .join(\"\\n\")\n}\n\nOperationLink.propTypes = {\n getComponent: PropTypes.func.isRequired,\n link: ImPropTypes.orderedMap.isRequired,\n name: PropTypes.String\n}\n\nexport default OperationLink\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class OperationServers extends React.Component {\n static propTypes = {\n // for self\n path: PropTypes.string.isRequired,\n method: PropTypes.string.isRequired,\n operationServers: ImPropTypes.list,\n pathServers: ImPropTypes.list,\n setSelectedServer: PropTypes.func.isRequired,\n setServerVariableValue: PropTypes.func.isRequired,\n getSelectedServer: PropTypes.func.isRequired,\n getServerVariable: PropTypes.func.isRequired,\n getEffectiveServerValue: PropTypes.func.isRequired,\n\n // utils\n getComponent: PropTypes.func.isRequired\n }\n\n setSelectedServer = (server) => {\n const { path, method } = this.props\n // FIXME: we should be keeping up with this in props/state upstream of us\n // instead of cheating™ with `forceUpdate`\n this.forceUpdate()\n return this.props.setSelectedServer(server, `${path}:${method}`)\n }\n\n setServerVariableValue = (obj) => {\n const { path, method } = this.props\n // FIXME: we should be keeping up with this in props/state upstream of us\n // instead of cheating™ with `forceUpdate`\n this.forceUpdate()\n return this.props.setServerVariableValue({\n ...obj,\n namespace: `${path}:${method}`\n })\n }\n\n getSelectedServer = () => {\n const { path, method } = this.props\n return this.props.getSelectedServer(`${path}:${method}`)\n }\n\n getServerVariable = (server, key) => {\n const { path, method } = this.props\n return this.props.getServerVariable({\n namespace: `${path}:${method}`,\n server\n }, key)\n }\n\n getEffectiveServerValue = (server) => {\n const { path, method } = this.props\n return this.props.getEffectiveServerValue({\n server,\n namespace: `${path}:${method}`\n })\n }\n\n render() {\n const {\n // for self\n operationServers,\n pathServers,\n\n // util\n getComponent\n } = this.props\n\n if(!operationServers && !pathServers) {\n return null\n }\n\n const Servers = getComponent(\"Servers\")\n\n const serversToDisplay = operationServers || pathServers\n const displaying = operationServers ? \"operation\" : \"path\"\n\n return
    \n
    \n
    \n

    Servers

    \n
    \n
    \n
    \n

    \n These {displaying}-level options override the global server options.\n

    \n \n
    \n
    \n }\n}\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport cx from \"classnames\"\nimport { stringify } from \"core/utils\"\n\nconst NOOP = Function.prototype\n\nexport default class RequestBodyEditor extends PureComponent {\n\n static propTypes = {\n onChange: PropTypes.func,\n getComponent: PropTypes.func.isRequired,\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n errors: PropTypes.array,\n }\n\n static defaultProps = {\n onChange: NOOP,\n userHasEditedBody: false,\n }\n\n constructor(props, context) {\n super(props, context)\n\n this.state = {\n value: stringify(props.value) || props.defaultValue\n }\n\n // this is the glue that makes sure our initial value gets set as the\n // current request body value\n // TODO: achieve this in a selector instead\n props.onChange(props.value)\n }\n\n applyDefaultValue = (nextProps) => {\n const { onChange, defaultValue } = (nextProps ? nextProps : this.props)\n\n this.setState({\n value: defaultValue\n })\n\n return onChange(defaultValue)\n }\n\n onChange = (value) => {\n this.props.onChange(stringify(value))\n }\n\n onDomChange = e => {\n const inputValue = e.target.value\n\n this.setState({\n value: inputValue,\n }, () => this.onChange(inputValue))\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if(\n this.props.value !== nextProps.value &&\n nextProps.value !== this.state.value\n ) {\n\n this.setState({\n value: stringify(nextProps.value)\n })\n }\n\n\n\n if(!nextProps.value && nextProps.defaultValue && !!this.state.value) {\n // if new value is falsy, we have a default, AND the falsy value didn't\n // come from us originally\n this.applyDefaultValue(nextProps)\n }\n }\n\n render() {\n let {\n getComponent,\n errors,\n } = this.props\n\n let {\n value\n } = this.state\n\n let isInvalid = errors.size > 0 ? true : false\n const TextArea = getComponent(\"TextArea\")\n\n return (\n
    \n \n
    \n )\n\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { Map, OrderedMap, List } from \"immutable\"\nimport { getCommonExtensions, stringify, isEmptyValue } from \"core/utils\"\nimport { getKnownSyntaxHighlighterLanguage } from \"core/utils/jsonParse\"\n\nexport const getDefaultRequestBodyValue = (requestBody, mediaType, activeExamplesKey, fn) => {\n const mediaTypeValue = requestBody.getIn([\"content\", mediaType])\n const schema = mediaTypeValue.get(\"schema\").toJS()\n\n const hasExamplesKey = mediaTypeValue.get(\"examples\") !== undefined\n const exampleSchema = mediaTypeValue.get(\"example\")\n const mediaTypeExample = hasExamplesKey\n ? mediaTypeValue.getIn([\n \"examples\",\n activeExamplesKey,\n \"value\"\n ])\n : exampleSchema\n\n const exampleValue = fn.getSampleSchema(\n schema,\n mediaType,\n {\n includeWriteOnly: true\n },\n mediaTypeExample\n )\n return stringify(exampleValue)\n}\n\n\n\nconst RequestBody = ({\n userHasEditedBody,\n requestBody,\n requestBodyValue,\n requestBodyInclusionSetting,\n requestBodyErrors,\n getComponent,\n getConfigs,\n specSelectors,\n fn,\n contentType,\n isExecute,\n specPath,\n onChange,\n onChangeIncludeEmpty,\n activeExamplesKey,\n updateActiveExamplesKey,\n setRetainRequestBodyValueFlag\n}) => {\n const handleFile = (e) => {\n onChange(e.target.files[0])\n }\n const setIsIncludedOptions = (key) => {\n let options = {\n key,\n shouldDispatchInit: false,\n defaultValue: true\n }\n let currentInclusion = requestBodyInclusionSetting.get(key, \"no value\")\n if (currentInclusion === \"no value\") {\n options.shouldDispatchInit = true\n // future: can get/set defaultValue from a config setting\n }\n return options\n }\n\n const Markdown = getComponent(\"Markdown\", true)\n const ModelExample = getComponent(\"modelExample\")\n const RequestBodyEditor = getComponent(\"RequestBodyEditor\")\n const HighlightCode = getComponent(\"highlightCode\")\n const ExamplesSelectValueRetainer = getComponent(\"ExamplesSelectValueRetainer\")\n const Example = getComponent(\"Example\")\n const ParameterIncludeEmpty = getComponent(\"ParameterIncludeEmpty\")\n\n const { showCommonExtensions } = getConfigs()\n\n const requestBodyDescription = (requestBody && requestBody.get(\"description\")) || null\n const requestBodyContent = (requestBody && requestBody.get(\"content\")) || new OrderedMap()\n contentType = contentType || requestBodyContent.keySeq().first() || \"\"\n\n const mediaTypeValue = requestBodyContent.get(contentType, OrderedMap())\n const schemaForMediaType = mediaTypeValue.get(\"schema\", OrderedMap())\n const rawExamplesOfMediaType = mediaTypeValue.get(\"examples\", null)\n const sampleForMediaType = rawExamplesOfMediaType?.map((container, key) => {\n const val = container?.get(\"value\", null)\n if(val) {\n container = container.set(\"value\", getDefaultRequestBodyValue(\n requestBody,\n contentType,\n key,\n fn,\n ), val)\n }\n return container\n })\n\n const handleExamplesSelect = (key /*, { isSyntheticChange } */) => {\n updateActiveExamplesKey(key)\n }\n requestBodyErrors = List.isList(requestBodyErrors) ? requestBodyErrors : List()\n\n if(!mediaTypeValue.size) {\n return null\n }\n\n const isObjectContent = mediaTypeValue.getIn([\"schema\", \"type\"]) === \"object\"\n const isBinaryFormat = mediaTypeValue.getIn([\"schema\", \"format\"]) === \"binary\"\n const isBase64Format = mediaTypeValue.getIn([\"schema\", \"format\"]) === \"base64\"\n\n if(\n contentType === \"application/octet-stream\"\n || contentType.indexOf(\"image/\") === 0\n || contentType.indexOf(\"audio/\") === 0\n || contentType.indexOf(\"video/\") === 0\n || isBinaryFormat\n || isBase64Format\n ) {\n const Input = getComponent(\"Input\")\n\n if(!isExecute) {\n return \n Example values are not available for {contentType} media types.\n \n }\n\n return \n }\n\n if (\n isObjectContent &&\n (\n contentType === \"application/x-www-form-urlencoded\" ||\n contentType.indexOf(\"multipart/\") === 0\n ) &&\n schemaForMediaType.get(\"properties\", OrderedMap()).size > 0\n ) {\n const JsonSchemaForm = getComponent(\"JsonSchemaForm\")\n const ParameterExt = getComponent(\"ParameterExt\")\n const bodyProperties = schemaForMediaType.get(\"properties\", OrderedMap())\n requestBodyValue = Map.isMap(requestBodyValue) ? requestBodyValue : OrderedMap()\n\n return
    \n { requestBodyDescription &&\n \n }\n \n \n {\n Map.isMap(bodyProperties) && bodyProperties.entrySeq().map(([key, prop]) => {\n if (prop.get(\"readOnly\")) return\n\n let commonExt = showCommonExtensions ? getCommonExtensions(prop) : null\n const required = schemaForMediaType.get(\"required\", List()).includes(key)\n const type = prop.get(\"type\")\n const format = prop.get(\"format\")\n const description = prop.get(\"description\")\n const currentValue = requestBodyValue.getIn([key, \"value\"])\n const currentErrors = requestBodyValue.getIn([key, \"errors\"]) || requestBodyErrors\n const included = requestBodyInclusionSetting.get(key) || false\n\n const useInitialValFromSchemaSamples = prop.has(\"default\")\n || prop.has(\"example\")\n || prop.hasIn([\"items\", \"example\"])\n || prop.hasIn([\"items\", \"default\"])\n const useInitialValFromEnum = prop.has(\"enum\") && (prop.get(\"enum\").size === 1 || required)\n const useInitialValue = useInitialValFromSchemaSamples || useInitialValFromEnum\n\n let initialValue = \"\"\n if (type === \"array\" && !useInitialValue) {\n initialValue = []\n }\n if (type === \"object\" || useInitialValue) {\n // TODO: what about example or examples from requestBody could be passed as exampleOverride\n initialValue = fn.getSampleSchema(prop, false, {\n includeWriteOnly: true\n })\n }\n\n if (typeof initialValue !== \"string\" && type === \"object\") {\n initialValue = stringify(initialValue)\n }\n if (typeof initialValue === \"string\" && type === \"array\") {\n initialValue = JSON.parse(initialValue)\n }\n\n const isFile = type === \"string\" && (format === \"binary\" || format === \"base64\")\n\n return \n \n \n \n })\n }\n \n
    \n
    \n { key }\n { !required ? null :  * }\n
    \n
    \n { type }\n { format && (${format})}\n {!showCommonExtensions || !commonExt.size ? null : commonExt.entrySeq().map(([key, v]) => )}\n
    \n
    \n { prop.get(\"deprecated\") ? \"deprecated\": null }\n
    \n
    \n \n {isExecute ?
    \n {\n onChange(value, [key])\n }}\n />\n {required ? null : (\n onChangeIncludeEmpty(key, value)}\n isIncluded={included}\n isIncludedOptions={setIsIncludedOptions(key)}\n isDisabled={Array.isArray(currentValue) ? currentValue.length !== 0 : !isEmptyValue(currentValue)}\n />\n )}\n
    : null }\n
    \n
    \n }\n\n const sampleRequestBody = getDefaultRequestBodyValue(\n requestBody,\n contentType,\n activeExamplesKey,\n fn,\n )\n let language = null\n let testValueForJson = getKnownSyntaxHighlighterLanguage(sampleRequestBody)\n if (testValueForJson) {\n language = \"json\"\n }\n\n return
    \n { requestBodyDescription &&\n \n }\n {\n sampleForMediaType ? (\n \n ) : null\n }\n {\n isExecute ? (\n
    \n \n
    \n ) : (\n \n }\n includeWriteOnly={true}\n />\n )\n }\n {\n sampleForMediaType ? (\n \n ) : null\n }\n
    \n}\n\nRequestBody.propTypes = {\n userHasEditedBody: PropTypes.bool.isRequired,\n requestBody: ImPropTypes.orderedMap.isRequired,\n requestBodyValue: ImPropTypes.orderedMap.isRequired,\n requestBodyInclusionSetting: ImPropTypes.map.isRequired,\n requestBodyErrors: ImPropTypes.list.isRequired,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n fn: PropTypes.object.isRequired,\n specSelectors: PropTypes.object.isRequired,\n contentType: PropTypes.string,\n isExecute: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n onChangeIncludeEmpty: PropTypes.func.isRequired,\n specPath: PropTypes.array.isRequired,\n activeExamplesKey: PropTypes.string,\n updateActiveExamplesKey: PropTypes.func,\n setRetainRequestBodyValueFlag: PropTypes.func,\n oas3Actions: PropTypes.object.isRequired\n}\n\nexport default RequestBody\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class ServersContainer extends React.Component {\n\n static propTypes = {\n specSelectors: PropTypes.object.isRequired,\n oas3Selectors: PropTypes.object.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n }\n\n render () {\n const {specSelectors, oas3Selectors, oas3Actions, getComponent} = this.props\n\n const servers = specSelectors.servers()\n\n const Servers = getComponent(\"Servers\")\n\n return servers && servers.size ? (\n
    \n Servers\n \n
    ) : null\n }\n}","import React from \"react\"\nimport { OrderedMap } from \"immutable\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class Servers extends React.Component {\n\n static propTypes = {\n servers: ImPropTypes.list.isRequired,\n currentServer: PropTypes.string.isRequired,\n setSelectedServer: PropTypes.func.isRequired,\n setServerVariableValue: PropTypes.func.isRequired,\n getServerVariable: PropTypes.func.isRequired,\n getEffectiveServerValue: PropTypes.func.isRequired\n }\n\n componentDidMount() {\n let { servers, currentServer } = this.props\n\n if(currentServer) {\n return\n }\n\n // fire 'change' event to set default 'value' of select\n this.setServer(servers.first()?.get(\"url\"))\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n let {\n servers,\n setServerVariableValue,\n getServerVariable\n } = nextProps\n if (this.props.currentServer !== nextProps.currentServer || this.props.servers !== nextProps.servers) {\n // Server has changed, we may need to set default values\n let currentServerDefinition = servers\n .find(v => v.get(\"url\") === nextProps.currentServer)\n let prevServerDefinition = this.props.servers\n .find(v => v.get(\"url\") === this.props.currentServer) || OrderedMap()\n \n if(!currentServerDefinition) {\n return this.setServer(servers.first().get(\"url\"))\n }\n \n let prevServerVariableDefs = prevServerDefinition.get(\"variables\") || OrderedMap()\n let prevServerVariableDefaultKey = prevServerVariableDefs.find(v => v.get(\"default\")) || OrderedMap()\n let prevServerVariableDefaultValue = prevServerVariableDefaultKey.get(\"default\")\n \n let currentServerVariableDefs = currentServerDefinition.get(\"variables\") || OrderedMap()\n let currentServerVariableDefaultKey = currentServerVariableDefs.find(v => v.get(\"default\")) || OrderedMap()\n let currentServerVariableDefaultValue = currentServerVariableDefaultKey.get(\"default\")\n \n currentServerVariableDefs.map((val, key) => {\n let currentValue = getServerVariable(nextProps.currentServer, key)\n \n // note: it is possible for both key/val to be the same across definitions,\n // but we will try to detect a change in default values between definitions\n // only set the default value if the user hasn't set one yet\n // or if the definition appears to have changed\n if (!currentValue || prevServerVariableDefaultValue !== currentServerVariableDefaultValue) {\n setServerVariableValue({\n server: nextProps.currentServer,\n key,\n val: val.get(\"default\") || \"\"\n })\n }\n })\n }\n }\n\n onServerChange =( e ) => {\n this.setServer( e.target.value )\n\n // set default variable values\n }\n\n onServerVariableValueChange = ( e ) => {\n let {\n setServerVariableValue,\n currentServer\n } = this.props\n\n let variableName = e.target.getAttribute(\"data-variable\")\n let newVariableValue = e.target.value\n\n if(typeof setServerVariableValue === \"function\") {\n setServerVariableValue({\n server: currentServer,\n key: variableName,\n val: newVariableValue\n })\n }\n }\n\n setServer = ( value ) => {\n let { setSelectedServer } = this.props\n\n setSelectedServer(value)\n }\n\n render() {\n let { servers,\n currentServer,\n getServerVariable,\n getEffectiveServerValue\n } = this.props\n\n\n let currentServerDefinition = servers.find(s => s.get(\"url\") === currentServer) || OrderedMap()\n\n let currentServerVariableDefs = currentServerDefinition.get(\"variables\") || OrderedMap()\n\n let shouldShowVariableUI = currentServerVariableDefs.size !== 0\n\n return (\n
    \n \n { shouldShowVariableUI ?\n
    \n\n
    \n Computed URL:\n \n {getEffectiveServerValue(currentServer)}\n \n
    \n

    Server variables

    \n \n \n {\n currentServerVariableDefs.entrySeq().map(([name, val]) => {\n return \n \n \n \n })\n }\n \n
    {name}\n { val.get(\"enum\") ?\n :\n \n }\n
    \n
    : null\n }\n
    \n )\n }\n}\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nexport function isOAS30(jsSpec) {\n const oasVersion = jsSpec.get(\"openapi\")\n\n return (\n typeof oasVersion === \"string\" &&\n /^3\\.0\\.([0123])(?:-rc[012])?$/.test(oasVersion)\n )\n}\n\nexport function isSwagger2(jsSpec) {\n const swaggerVersion = jsSpec.get(\"swagger\")\n\n return typeof swaggerVersion === \"string\" && swaggerVersion === \"2.0\"\n}\n\nexport function OAS3ComponentWrapFactory(Component) {\n return (Ori, system) => (props) => {\n if (typeof system.specSelectors?.isOAS3 === \"function\") {\n if (system.specSelectors.isOAS3()) {\n return \n } else {\n return \n }\n } else {\n console.warn(\"OAS3 wrapper: couldn't get spec\")\n return null\n }\n }\n}\n\nexport function OAS30ComponentWrapFactory(Component) {\n return (Ori, system) => (props) => {\n if (typeof system.specSelectors?.isOAS30 === \"function\") {\n if (system.specSelectors.isOAS30()) {\n return \n } else {\n return \n }\n } else {\n console.warn(\"OAS30 wrapper: couldn't get spec\")\n return null\n }\n }\n}\n","/**\n * @prettier\n */\nimport * as specWrapSelectors from \"./spec-extensions/wrap-selectors\"\nimport * as authWrapSelectors from \"./auth-extensions/wrap-selectors\"\nimport * as specSelectors from \"./spec-extensions/selectors\"\nimport components from \"./components\"\nimport wrapComponents from \"./wrap-components\"\nimport * as actions from \"./actions\"\nimport * as selectors from \"./selectors\"\nimport reducers from \"./reducers\"\n\nexport default function () {\n return {\n components,\n wrapComponents,\n statePlugins: {\n spec: {\n wrapSelectors: specWrapSelectors,\n selectors: specSelectors,\n },\n auth: {\n wrapSelectors: authWrapSelectors,\n },\n oas3: {\n actions,\n reducers,\n selectors,\n },\n },\n }\n}\n","import { fromJS, Map } from \"immutable\"\n\nimport {\n UPDATE_SELECTED_SERVER,\n UPDATE_REQUEST_BODY_VALUE,\n UPDATE_REQUEST_BODY_INCLUSION,\n UPDATE_ACTIVE_EXAMPLES_MEMBER,\n UPDATE_REQUEST_CONTENT_TYPE,\n UPDATE_SERVER_VARIABLE_VALUE,\n UPDATE_RESPONSE_CONTENT_TYPE,\n SET_REQUEST_BODY_VALIDATE_ERROR,\n CLEAR_REQUEST_BODY_VALIDATE_ERROR,\n CLEAR_REQUEST_BODY_VALUE, UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG,\n} from \"./actions\"\n\nexport default {\n [UPDATE_SELECTED_SERVER]: (state, { payload: { selectedServerUrl, namespace } } ) =>{\n const path = namespace ? [ namespace, \"selectedServer\"] : [ \"selectedServer\"]\n return state.setIn( path, selectedServerUrl)\n },\n [UPDATE_REQUEST_BODY_VALUE]: (state, { payload: { value, pathMethod } } ) =>{\n let [path, method] = pathMethod\n if (!Map.isMap(value)) {\n // context: application/json is always a String (instead of Map)\n return state.setIn( [ \"requestData\", path, method, \"bodyValue\" ], value)\n }\n let currentVal = state.getIn([\"requestData\", path, method, \"bodyValue\"]) || Map()\n if (!Map.isMap(currentVal)) {\n // context: user switch from application/json to application/x-www-form-urlencoded\n currentVal = Map()\n }\n let newVal\n const [...valueKeys] = value.keys()\n valueKeys.forEach((valueKey) => {\n let valueKeyVal = value.getIn([valueKey])\n if (!currentVal.has(valueKey)) {\n newVal = currentVal.setIn([valueKey, \"value\"], valueKeyVal)\n } else if (!Map.isMap(valueKeyVal)) {\n // context: user input will be received as String\n newVal = currentVal.setIn([valueKey, \"value\"], valueKeyVal)\n }\n })\n return state.setIn([\"requestData\", path, method, \"bodyValue\"], newVal)\n },\n [UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG]: (state, { payload: { value, pathMethod } } ) =>{\n let [path, method] = pathMethod\n return state.setIn([\"requestData\", path, method, \"retainBodyValue\"], value)\n },\n [UPDATE_REQUEST_BODY_INCLUSION]: (state, { payload: { value, pathMethod, name } } ) =>{\n let [path, method] = pathMethod\n return state.setIn( [ \"requestData\", path, method, \"bodyInclusion\", name ], value)\n },\n [UPDATE_ACTIVE_EXAMPLES_MEMBER]: (state, { payload: { name, pathMethod, contextType, contextName } } ) =>{\n let [path, method] = pathMethod\n return state.setIn( [ \"examples\", path, method, contextType, contextName, \"activeExample\" ], name)\n },\n [UPDATE_REQUEST_CONTENT_TYPE]: (state, { payload: { value, pathMethod } } ) =>{\n let [path, method] = pathMethod\n return state.setIn( [ \"requestData\", path, method, \"requestContentType\" ], value)\n },\n [UPDATE_RESPONSE_CONTENT_TYPE]: (state, { payload: { value, path, method } } ) =>{\n return state.setIn( [ \"requestData\", path, method, \"responseContentType\" ], value)\n },\n [UPDATE_SERVER_VARIABLE_VALUE]: (state, { payload: { server, namespace, key, val } } ) =>{\n const path = namespace ? [ namespace, \"serverVariableValues\", server, key ] : [ \"serverVariableValues\", server, key ]\n return state.setIn(path, val)\n },\n [SET_REQUEST_BODY_VALIDATE_ERROR]: (state, { payload: { path, method, validationErrors } } ) => {\n let errors = []\n errors.push(\"Required field is not provided\")\n if (validationErrors.missingBodyValue) {\n // context: is application/json or application/xml, where typeof (missing) bodyValue = String\n return state.setIn([\"requestData\", path, method, \"errors\"], fromJS(errors))\n }\n if (validationErrors.missingRequiredKeys && validationErrors.missingRequiredKeys.length > 0) {\n // context: is application/x-www-form-urlencoded, with list of missing keys\n const { missingRequiredKeys } = validationErrors\n return state.updateIn([\"requestData\", path, method, \"bodyValue\"], fromJS({}), missingKeyValues => {\n return missingRequiredKeys.reduce((bodyValue, currentMissingKey) => {\n return bodyValue.setIn([currentMissingKey, \"errors\"], fromJS(errors))\n }, missingKeyValues)\n })\n }\n console.warn(\"unexpected result: SET_REQUEST_BODY_VALIDATE_ERROR\")\n return state\n },\n [CLEAR_REQUEST_BODY_VALIDATE_ERROR]: (state, { payload: { path, method } }) => {\n const requestBodyValue = state.getIn([\"requestData\", path, method, \"bodyValue\"])\n if (!Map.isMap(requestBodyValue)) {\n return state.setIn([\"requestData\", path, method, \"errors\"], fromJS([]))\n }\n const [...valueKeys] = requestBodyValue.keys()\n if (!valueKeys) {\n return state\n }\n return state.updateIn([\"requestData\", path, method, \"bodyValue\"], fromJS({}), bodyValues => {\n return valueKeys.reduce((bodyValue, curr) => {\n return bodyValue.setIn([curr, \"errors\"], fromJS([]))\n }, bodyValues)\n })\n },\n [CLEAR_REQUEST_BODY_VALUE]: (state, { payload: { pathMethod }}) => {\n let [path, method] = pathMethod\n const requestBodyValue = state.getIn([\"requestData\", path, method, \"bodyValue\"])\n if (!requestBodyValue) {\n return state\n }\n if (!Map.isMap(requestBodyValue)) {\n return state.setIn([\"requestData\", path, method, \"bodyValue\"], \"\")\n }\n return state.setIn([\"requestData\", path, method, \"bodyValue\"], Map())\n }\n}\n","/**\n * @prettier\n */\nimport { OrderedMap, Map, List } from \"immutable\"\nimport { createSelector } from \"reselect\"\n\nimport { getDefaultRequestBodyValue } from \"./components/request-body\"\nimport { stringify } from \"../../utils\"\n\n// Helpers\n\nconst onlyOAS3 =\n (selector) =>\n (state, ...args) =>\n (system) => {\n if (system.getSystem().specSelectors.isOAS3()) {\n const selectedValue = selector(state, ...args)\n return typeof selectedValue === \"function\"\n ? selectedValue(system)\n : selectedValue\n } else {\n return null\n }\n }\n\nfunction validateRequestBodyIsRequired(selector) {\n return (...args) =>\n (system) => {\n const specJson = system.getSystem().specSelectors.specJson()\n const argsList = [...args]\n // expect argsList[0] = state\n let pathMethod = argsList[1] || []\n let isOas3RequestBodyRequired = specJson.getIn([\n \"paths\",\n ...pathMethod,\n \"requestBody\",\n \"required\",\n ])\n\n if (isOas3RequestBodyRequired) {\n return selector(...args)\n } else {\n // validation pass b/c not required\n return true\n }\n }\n}\n\nconst validateRequestBodyValueExists = (state, pathMethod) => {\n pathMethod = pathMethod || []\n let oas3RequestBodyValue = state.getIn([\n \"requestData\",\n ...pathMethod,\n \"bodyValue\",\n ])\n // context: bodyValue can be a String, or a Map\n if (!oas3RequestBodyValue) {\n return false\n }\n // validation pass if String is not empty, or if Map exists\n return true\n}\n\nexport const selectedServer = onlyOAS3((state, namespace) => {\n const path = namespace ? [namespace, \"selectedServer\"] : [\"selectedServer\"]\n return state.getIn(path) || \"\"\n})\n\nexport const requestBodyValue = onlyOAS3((state, path, method) => {\n return state.getIn([\"requestData\", path, method, \"bodyValue\"]) || null\n})\n\nexport const shouldRetainRequestBodyValue = onlyOAS3((state, path, method) => {\n return state.getIn([\"requestData\", path, method, \"retainBodyValue\"]) || false\n})\n\nexport const selectDefaultRequestBodyValue =\n (state, path, method) => (system) => {\n const { oas3Selectors, specSelectors, fn } = system.getSystem()\n\n if (specSelectors.isOAS3()) {\n const currentMediaType = oas3Selectors.requestContentType(path, method)\n if (currentMediaType) {\n return getDefaultRequestBodyValue(\n specSelectors.specResolvedSubtree([\n \"paths\",\n path,\n method,\n \"requestBody\",\n ]),\n currentMediaType,\n oas3Selectors.activeExamplesMember(\n path,\n method,\n \"requestBody\",\n \"requestBody\"\n ),\n fn\n )\n }\n }\n return null\n }\n\nexport const hasUserEditedBody = onlyOAS3((state, path, method) => (system) => {\n const { oas3Selectors, specSelectors, fn } = system\n\n let userHasEditedBody = false\n const currentMediaType = oas3Selectors.requestContentType(path, method)\n let userEditedRequestBody = oas3Selectors.requestBodyValue(path, method)\n const requestBody = specSelectors.specResolvedSubtree([\n \"paths\",\n path,\n method,\n \"requestBody\",\n ])\n\n /**\n * The only request body that can currently be edited is for Path Items that are direct values of OpenAPI.paths.\n * Path Item contained within the Callback Object or OpenAPI.webhooks (OpenAPI 3.1.0) have `Try it out`\n * disabled and thus body cannot be edited.\n */\n if (!requestBody) {\n return false\n }\n\n if (Map.isMap(userEditedRequestBody)) {\n // context is not application/json media-type\n userEditedRequestBody = stringify(\n userEditedRequestBody\n .mapEntries((kv) =>\n Map.isMap(kv[1]) ? [kv[0], kv[1].get(\"value\")] : kv\n )\n .toJS()\n )\n }\n if (List.isList(userEditedRequestBody)) {\n userEditedRequestBody = stringify(userEditedRequestBody)\n }\n\n if (currentMediaType) {\n const currentMediaTypeDefaultBodyValue = getDefaultRequestBodyValue(\n requestBody,\n currentMediaType,\n oas3Selectors.activeExamplesMember(\n path,\n method,\n \"requestBody\",\n \"requestBody\"\n ),\n fn\n )\n userHasEditedBody =\n !!userEditedRequestBody &&\n userEditedRequestBody !== currentMediaTypeDefaultBodyValue\n }\n return userHasEditedBody\n})\n\nexport const requestBodyInclusionSetting = onlyOAS3((state, path, method) => {\n return state.getIn([\"requestData\", path, method, \"bodyInclusion\"]) || Map()\n})\n\nexport const requestBodyErrors = onlyOAS3((state, path, method) => {\n return state.getIn([\"requestData\", path, method, \"errors\"]) || null\n})\n\nexport const activeExamplesMember = onlyOAS3(\n (state, path, method, type, name) => {\n return (\n state.getIn([\"examples\", path, method, type, name, \"activeExample\"]) ||\n null\n )\n }\n)\n\nexport const requestContentType = onlyOAS3((state, path, method) => {\n return (\n state.getIn([\"requestData\", path, method, \"requestContentType\"]) || null\n )\n})\n\nexport const responseContentType = onlyOAS3((state, path, method) => {\n return (\n state.getIn([\"requestData\", path, method, \"responseContentType\"]) || null\n )\n})\n\nexport const serverVariableValue = onlyOAS3((state, locationData, key) => {\n let path\n\n // locationData may take one of two forms, for backwards compatibility\n // Object: ({server, namespace?}) or String:(server)\n if (typeof locationData !== \"string\") {\n const { server, namespace } = locationData\n if (namespace) {\n path = [namespace, \"serverVariableValues\", server, key]\n } else {\n path = [\"serverVariableValues\", server, key]\n }\n } else {\n const server = locationData\n path = [\"serverVariableValues\", server, key]\n }\n\n return state.getIn(path) || null\n})\n\nexport const serverVariables = onlyOAS3((state, locationData) => {\n let path\n\n // locationData may take one of two forms, for backwards compatibility\n // Object: ({server, namespace?}) or String:(server)\n if (typeof locationData !== \"string\") {\n const { server, namespace } = locationData\n if (namespace) {\n path = [namespace, \"serverVariableValues\", server]\n } else {\n path = [\"serverVariableValues\", server]\n }\n } else {\n const server = locationData\n path = [\"serverVariableValues\", server]\n }\n\n return state.getIn(path) || OrderedMap()\n})\n\nexport const serverEffectiveValue = onlyOAS3((state, locationData) => {\n var varValues, serverValue\n\n // locationData may take one of two forms, for backwards compatibility\n // Object: ({server, namespace?}) or String:(server)\n if (typeof locationData !== \"string\") {\n const { server, namespace } = locationData\n serverValue = server\n if (namespace) {\n varValues = state.getIn([namespace, \"serverVariableValues\", serverValue])\n } else {\n varValues = state.getIn([\"serverVariableValues\", serverValue])\n }\n } else {\n serverValue = locationData\n varValues = state.getIn([\"serverVariableValues\", serverValue])\n }\n\n varValues = varValues || OrderedMap()\n let str = serverValue\n\n varValues.map((val, key) => {\n str = str.replace(new RegExp(`{${key}}`, \"g\"), val)\n })\n\n return str\n})\n\nexport const validateBeforeExecute = validateRequestBodyIsRequired(\n (state, pathMethod) => validateRequestBodyValueExists(state, pathMethod)\n)\n\nexport const validateShallowRequired = (\n state,\n {\n oas3RequiredRequestBodyContentType,\n oas3RequestContentType,\n oas3RequestBodyValue,\n }\n) => {\n let missingRequiredKeys = []\n // context: json => String; urlencoded, form-data => Map\n if (!Map.isMap(oas3RequestBodyValue)) {\n return missingRequiredKeys\n }\n let requiredKeys = []\n // Cycle through list of possible contentTypes for matching contentType and defined requiredKeys\n Object.keys(oas3RequiredRequestBodyContentType.requestContentType).forEach(\n (contentType) => {\n if (contentType === oas3RequestContentType) {\n let contentTypeVal =\n oas3RequiredRequestBodyContentType.requestContentType[contentType]\n contentTypeVal.forEach((requiredKey) => {\n if (requiredKeys.indexOf(requiredKey) < 0) {\n requiredKeys.push(requiredKey)\n }\n })\n }\n }\n )\n requiredKeys.forEach((key) => {\n let requiredKeyValue = oas3RequestBodyValue.getIn([key, \"value\"])\n if (!requiredKeyValue) {\n missingRequiredKeys.push(key)\n }\n })\n return missingRequiredKeys\n}\n\nexport const validOperationMethods = createSelector(() => [\n \"get\",\n \"put\",\n \"post\",\n \"delete\",\n \"options\",\n \"head\",\n \"patch\",\n \"trace\",\n])\n","/**\n * @prettier\n */\nimport { List, Map } from \"immutable\"\n\nimport {\n isSwagger2 as isSwagger2Helper,\n isOAS30 as isOAS30Helper,\n} from \"../helpers\"\n\n/**\n * Helpers\n */\n\nconst map = Map()\n\nexport const isSwagger2 = () => (system) => {\n const spec = system.getSystem().specSelectors.specJson()\n return isSwagger2Helper(spec)\n}\n\nexport const isOAS30 = () => (system) => {\n const spec = system.getSystem().specSelectors.specJson()\n return isOAS30Helper(spec)\n}\n\nexport const isOAS3 = () => (system) => {\n return system.getSystem().specSelectors.isOAS30()\n}\n\nfunction onlyOAS3(selector) {\n return (state, ...args) =>\n (system) => {\n if (system.specSelectors.isOAS3()) {\n const selectedValue = selector(state, ...args)\n return typeof selectedValue === \"function\"\n ? selectedValue(system)\n : selectedValue\n } else {\n return null\n }\n }\n}\n\nexport const servers = onlyOAS3(() => (system) => {\n const spec = system.specSelectors.specJson()\n return spec.get(\"servers\", map)\n})\n\nexport const callbacksOperations = onlyOAS3(\n (state, { callbacks, specPath }) =>\n (system) => {\n const validOperationMethods = system.specSelectors.validOperationMethods()\n\n if (!Map.isMap(callbacks)) return {}\n\n return callbacks\n .reduce((allOperations, callback, callbackName) => {\n if (!Map.isMap(callback)) return allOperations\n\n return callback.reduce((callbackOperations, pathItem, expression) => {\n if (!Map.isMap(pathItem)) return callbackOperations\n\n const pathItemOperations = pathItem\n .entrySeq()\n .filter(([key]) => validOperationMethods.includes(key))\n .map(([method, operation]) => ({\n operation: Map({ operation }),\n method,\n path: expression,\n callbackName,\n specPath: specPath.concat([callbackName, expression, method]),\n }))\n\n return callbackOperations.concat(pathItemOperations)\n }, List())\n }, List())\n .groupBy((operationDTO) => operationDTO.callbackName)\n .map((operations) => operations.toArray())\n .toObject()\n }\n)\n","/**\n * @prettier\n */\nimport { createSelector } from \"reselect\"\nimport { specJsonWithResolvedSubtrees } from \"../../spec/selectors\"\nimport { Map } from \"immutable\"\n\n/**\n * Helpers\n */\n\nconst map = Map()\n\nfunction onlyOAS3(selector) {\n return (ori, system) =>\n (...args) => {\n if (system.getSystem().specSelectors.isOAS3()) {\n const result = selector(...args)\n return typeof result === \"function\" ? result(system) : result\n } else {\n return ori(...args)\n }\n }\n}\n\nconst nullSelector = createSelector(() => null)\n\nconst OAS3NullSelector = onlyOAS3(nullSelector)\n\n/**\n * Wrappers\n */\n\nexport const definitions = onlyOAS3(() => (system) => {\n const spec = system.getSystem().specSelectors.specJson()\n const schemas = spec.getIn([\"components\", \"schemas\"])\n return Map.isMap(schemas) ? schemas : map\n})\n\nexport const hasHost = onlyOAS3(() => (system) => {\n const spec = system.getSystem().specSelectors.specJson()\n return spec.hasIn([\"servers\", 0])\n})\n\nexport const securityDefinitions = onlyOAS3(\n createSelector(\n specJsonWithResolvedSubtrees,\n (spec) => spec.getIn([\"components\", \"securitySchemes\"]) || null\n )\n)\n\nexport const validOperationMethods =\n (oriSelector, system) =>\n (state, ...args) => {\n if (system.specSelectors.isOAS3()) {\n return system.oas3Selectors.validOperationMethods()\n }\n\n return oriSelector(...args)\n }\n\nexport const host = OAS3NullSelector\nexport const basePath = OAS3NullSelector\nexport const consumes = OAS3NullSelector\nexport const produces = OAS3NullSelector\nexport const schemes = OAS3NullSelector\n","import React from \"react\"\nimport { OAS3ComponentWrapFactory } from \"../helpers\"\n\nexport default OAS3ComponentWrapFactory(({ Ori, ...props }) => {\n const {\n schema, getComponent, errSelectors, authorized, onAuthChange, name\n } = props\n\n const HttpAuth = getComponent(\"HttpAuth\")\n const type = schema.get(\"type\")\n\n if(type === \"http\") {\n return \n } else {\n return \n }\n})\n","import Markdown from \"./markdown\"\nimport AuthItem from \"./auth-item\"\nimport VersionStamp from \"./version-stamp\"\nimport OnlineValidatorBadge from \"./online-validator-badge\"\nimport Model from \"./model\"\nimport JsonSchema_string from \"./json-schema-string\"\n\nexport default {\n Markdown,\n AuthItem,\n JsonSchema_string,\n VersionStamp,\n model: Model,\n onlineValidatorBadge: OnlineValidatorBadge,\n}\n","import React from \"react\"\nimport { OAS3ComponentWrapFactory } from \"../helpers\"\n\nexport default OAS3ComponentWrapFactory(({ Ori, ...props }) => {\n const {\n schema,\n getComponent,\n errors,\n onChange\n } = props\n\n const format = schema && schema.get ? schema.get(\"format\") : null\n const type = schema && schema.get ? schema.get(\"type\") : null\n const Input = getComponent(\"Input\")\n\n if(type && type === \"string\" && (format && (format === \"binary\" || format === \"base64\"))) {\n return {\n onChange(e.target.files[0])\n }}\n disabled={Ori.isDisabled}/>\n } else {\n return \n }\n})\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport cx from \"classnames\"\nimport { Remarkable } from \"remarkable\"\nimport { OAS3ComponentWrapFactory } from \"../helpers\"\nimport { sanitizer } from \"core/components/providers/markdown\"\n\nconst parser = new Remarkable(\"commonmark\")\nparser.block.ruler.enable([\"table\"])\nparser.set({ linkTarget: \"_blank\" })\n\nexport const Markdown = ({ source, className = \"\", getConfigs }) => {\n if(typeof source !== \"string\") {\n return null\n }\n\n if ( source ) {\n const { useUnsafeMarkdown } = getConfigs()\n const html = parser.render(source)\n const sanitized = sanitizer(html, { useUnsafeMarkdown })\n\n let trimmed\n\n if(typeof sanitized === \"string\") {\n trimmed = sanitized.trim()\n }\n\n return (\n \n )\n }\n return null\n}\nMarkdown.propTypes = {\n source: PropTypes.string,\n className: PropTypes.string,\n getConfigs: PropTypes.func,\n}\n\nMarkdown.defaultProps = {\n getConfigs: () => ({ useUnsafeMarkdown: false }),\n}\n\nexport default OAS3ComponentWrapFactory(Markdown)\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { OAS3ComponentWrapFactory } from \"../helpers\"\nimport Model from \"core/components/model\"\n\nclass ModelComponent extends Component {\n static propTypes = {\n schema: PropTypes.object.isRequired,\n name: PropTypes.string,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired,\n expandDepth: PropTypes.number,\n includeReadOnly: PropTypes.bool,\n includeWriteOnly: PropTypes.bool,\n }\n\n render(){\n let { getConfigs, schema } = this.props\n let classes = [\"model-box\"]\n let isDeprecated = schema.get(\"deprecated\") === true\n let message = null\n\n if(isDeprecated) {\n classes.push(\"deprecated\")\n message = Deprecated:\n }\n\n return
    \n {message}\n \n
    \n }\n}\n\nexport default OAS3ComponentWrapFactory(ModelComponent)\n","import { OAS3ComponentWrapFactory } from \"../helpers\"\nimport OnlineValidatorBadge from \"core/components/online-validator-badge\"\n\n// OAS3 spec is now supported by the online validator.\nexport default OAS3ComponentWrapFactory(OnlineValidatorBadge)\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { OAS30ComponentWrapFactory } from \"../helpers\"\n\nexport default OAS30ComponentWrapFactory((props) => {\n const { Ori } = props\n\n return (\n \n \n \n
    OAS 3.0
    \n
    \n
    \n )\n})\n","/**\n * @prettier\n */\nimport {\n makeIsExpandable,\n getProperties,\n} from \"./json-schema-2020-12-extensions/fn\"\nimport { wrapOAS31Fn } from \"./fn\"\n\nfunction afterLoad({ fn, getSystem }) {\n // overrides for fn.jsonSchema202012\n if (fn.jsonSchema202012) {\n const isExpandable = makeIsExpandable(\n fn.jsonSchema202012.isExpandable,\n getSystem\n )\n\n Object.assign(this.fn.jsonSchema202012, { isExpandable, getProperties })\n }\n\n // wraps schema generators from samples plugin and make them specific to OpenAPI 3.1 version\n if (typeof fn.sampleFromSchema === \"function\" && fn.jsonSchema202012) {\n const wrappedFns = wrapOAS31Fn(\n {\n sampleFromSchema: fn.jsonSchema202012.sampleFromSchema,\n sampleFromSchemaGeneric: fn.jsonSchema202012.sampleFromSchemaGeneric,\n createXMLExample: fn.jsonSchema202012.createXMLExample,\n memoizedSampleFromSchema: fn.jsonSchema202012.memoizedSampleFromSchema,\n memoizedCreateXMLExample: fn.jsonSchema202012.memoizedCreateXMLExample,\n },\n getSystem()\n )\n\n Object.assign(this.fn, wrappedFns)\n }\n}\n\nexport default afterLoad\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport { sanitizeUrl } from \"core/utils\"\n\nconst Contact = ({ getComponent, specSelectors }) => {\n const name = specSelectors.selectContactNameField()\n const url = specSelectors.selectContactUrl()\n const email = specSelectors.selectContactEmailField()\n\n const Link = getComponent(\"Link\")\n\n return (\n
    \n {url && (\n
    \n \n {name} - Website\n \n
    \n )}\n {email && (\n \n {url ? `Send email to ${name}` : `Contact ${name}`}\n \n )}\n
    \n )\n}\n\nContact.propTypes = {\n getComponent: PropTypes.func.isRequired,\n specSelectors: PropTypes.shape({\n selectContactNameField: PropTypes.func.isRequired,\n selectContactUrl: PropTypes.func.isRequired,\n selectContactEmailField: PropTypes.func.isRequired,\n }).isRequired,\n}\n\nexport default Contact\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport { sanitizeUrl } from \"core/utils\"\n\nconst Info = ({ getComponent, specSelectors }) => {\n const version = specSelectors.version()\n const url = specSelectors.url()\n const basePath = specSelectors.basePath()\n const host = specSelectors.host()\n const summary = specSelectors.selectInfoSummaryField()\n const description = specSelectors.selectInfoDescriptionField()\n const title = specSelectors.selectInfoTitleField()\n const termsOfServiceUrl = specSelectors.selectInfoTermsOfServiceUrl()\n const externalDocsUrl = specSelectors.selectExternalDocsUrl()\n const externalDocsDesc = specSelectors.selectExternalDocsDescriptionField()\n const contact = specSelectors.contact()\n const license = specSelectors.license()\n\n const Markdown = getComponent(\"Markdown\", true)\n const Link = getComponent(\"Link\")\n const VersionStamp = getComponent(\"VersionStamp\")\n const InfoUrl = getComponent(\"InfoUrl\")\n const InfoBasePath = getComponent(\"InfoBasePath\")\n const License = getComponent(\"License\", true)\n const Contact = getComponent(\"Contact\", true)\n const JsonSchemaDialect = getComponent(\"JsonSchemaDialect\", true)\n\n return (\n
    \n
    \n

    \n {title}\n {version && }\n

    \n\n {(host || basePath) && }\n {url && }\n
    \n\n {summary &&

    {summary}

    }\n\n
    \n \n
    \n\n {termsOfServiceUrl && (\n
    \n \n Terms of service\n \n
    \n )}\n\n {contact.size > 0 && }\n\n {license.size > 0 && }\n\n {externalDocsUrl && (\n \n {externalDocsDesc || externalDocsUrl}\n \n )}\n\n \n
    \n )\n}\n\nInfo.propTypes = {\n getComponent: PropTypes.func.isRequired,\n specSelectors: PropTypes.shape({\n version: PropTypes.func.isRequired,\n url: PropTypes.func.isRequired,\n basePath: PropTypes.func.isRequired,\n host: PropTypes.func.isRequired,\n selectInfoSummaryField: PropTypes.func.isRequired,\n selectInfoDescriptionField: PropTypes.func.isRequired,\n selectInfoTitleField: PropTypes.func.isRequired,\n selectInfoTermsOfServiceUrl: PropTypes.func.isRequired,\n selectExternalDocsUrl: PropTypes.func.isRequired,\n selectExternalDocsDescriptionField: PropTypes.func.isRequired,\n contact: PropTypes.func.isRequired,\n license: PropTypes.func.isRequired,\n }).isRequired,\n}\n\nexport default Info\n","/**\n * @prettier\n */\n\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport { sanitizeUrl } from \"core/utils\"\n\nconst JsonSchemaDialect = ({ getComponent, specSelectors }) => {\n const jsonSchemaDialect = specSelectors.selectJsonSchemaDialectField()\n const jsonSchemaDialectDefault = specSelectors.selectJsonSchemaDialectDefault() // prettier-ignore\n\n const Link = getComponent(\"Link\")\n\n return (\n <>\n {jsonSchemaDialect && jsonSchemaDialect === jsonSchemaDialectDefault && (\n

    \n JSON Schema dialect:{\" \"}\n \n {jsonSchemaDialect}\n \n

    \n )}\n\n {jsonSchemaDialect && jsonSchemaDialect !== jsonSchemaDialectDefault && (\n
    \n
    \n
    \n
    \n

    Warning

    \n

    \n OpenAPI.jsonSchemaDialect field contains a\n value different from the default value of{\" \"}\n \n {jsonSchemaDialectDefault}\n \n . Values different from the default one are currently not\n supported. Please either omit the field or provide it with the\n default value.\n

    \n
    \n
    \n
    \n
    \n )}\n \n )\n}\n\nJsonSchemaDialect.propTypes = {\n getComponent: PropTypes.func.isRequired,\n specSelectors: PropTypes.shape({\n selectJsonSchemaDialectField: PropTypes.func.isRequired,\n selectJsonSchemaDialectDefault: PropTypes.func.isRequired,\n }).isRequired,\n}\n\nexport default JsonSchemaDialect\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport { sanitizeUrl } from \"core/utils\"\n\nconst License = ({ getComponent, specSelectors }) => {\n const name = specSelectors.selectLicenseNameField()\n const url = specSelectors.selectLicenseUrl()\n\n const Link = getComponent(\"Link\")\n\n return (\n
    \n {url ? (\n
    \n \n {name}\n \n
    \n ) : (\n {name}\n )}\n
    \n )\n}\n\nLicense.propTypes = {\n getComponent: PropTypes.func.isRequired,\n specSelectors: PropTypes.shape({\n selectLicenseNameField: PropTypes.func.isRequired,\n selectLicenseUrl: PropTypes.func.isRequired,\n }).isRequired,\n}\n\nexport default License\n","/**\n * @prettier\n */\nimport React, { forwardRef, useCallback } from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nconst decodeRefName = (uri) => {\n const unescaped = uri.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n try {\n return decodeURIComponent(unescaped)\n } catch {\n return unescaped\n }\n}\nconst getModelName = (uri) => {\n if (typeof uri === \"string\" && uri.includes(\"#/components/schemas/\")) {\n return decodeRefName(uri.replace(/^.*#\\/components\\/schemas\\//, \"\"))\n }\n return null\n}\n\nconst Model = forwardRef(({ schema, getComponent, onToggle }, ref) => {\n const JSONSchema202012 = getComponent(\"JSONSchema202012\")\n const name = getModelName(schema.get(\"$$ref\"))\n\n const handleExpand = useCallback(\n (e, expanded) => {\n onToggle(name, expanded)\n },\n [name, onToggle]\n )\n\n return (\n \n )\n})\n\nModel.propTypes = {\n schema: ImPropTypes.map.isRequired,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired,\n specPath: ImPropTypes.list.isRequired,\n name: PropTypes.string,\n displayName: PropTypes.string,\n isRef: PropTypes.bool,\n required: PropTypes.bool,\n expandDepth: PropTypes.number,\n depth: PropTypes.number,\n includeReadOnly: PropTypes.bool,\n includeWriteOnly: PropTypes.bool,\n onToggle: PropTypes.func,\n}\n\nModel.defaultProps = {\n name: \"\",\n displayName: \"\",\n isRef: false,\n required: false,\n expandDepth: 0,\n depth: 1,\n includeReadOnly: false,\n includeWriteOnly: false,\n onToggle: () => {},\n}\n\nexport default Model\n","/**\n * @prettier\n */\nimport React, { useCallback, useEffect } from \"react\"\nimport PropTypes from \"prop-types\"\nimport classNames from \"classnames\"\n\nconst Models = ({\n specActions,\n specSelectors,\n layoutSelectors,\n layoutActions,\n getComponent,\n getConfigs,\n}) => {\n const schemas = specSelectors.selectSchemas()\n const hasSchemas = Object.keys(schemas).length > 0\n const schemasPath = [\"components\", \"schemas\"]\n const { docExpansion, defaultModelsExpandDepth } = getConfigs()\n const isOpenDefault = defaultModelsExpandDepth > 0 && docExpansion !== \"none\"\n const isOpen = layoutSelectors.isShown(schemasPath, isOpenDefault)\n const Collapse = getComponent(\"Collapse\")\n const JSONSchema202012 = getComponent(\"JSONSchema202012\")\n\n /**\n * Effects.\n */\n useEffect(() => {\n const isOpenAndExpanded = isOpen && defaultModelsExpandDepth > 1\n const isResolved = specSelectors.specResolvedSubtree(schemasPath) != null\n if (isOpenAndExpanded && !isResolved) {\n specActions.requestResolvedSubtree(schemasPath)\n }\n }, [isOpen, defaultModelsExpandDepth])\n\n /**\n * Event handlers.\n */\n\n const handleModelsExpand = useCallback(() => {\n layoutActions.show(schemasPath, !isOpen)\n }, [isOpen])\n const handleModelsRef = useCallback((node) => {\n if (node !== null) {\n layoutActions.readyToScroll(schemasPath, node)\n }\n }, [])\n const handleJSONSchema202012Ref = (schemaName) => (node) => {\n if (node !== null) {\n layoutActions.readyToScroll([...schemasPath, schemaName], node)\n }\n }\n const handleJSONSchema202012Expand = (schemaName) => (e, expanded) => {\n if (expanded) {\n const schemaPath = [...schemasPath, schemaName]\n const isResolved = specSelectors.specResolvedSubtree(schemaPath) != null\n if (!isResolved) {\n specActions.requestResolvedSubtree([...schemasPath, schemaName])\n }\n }\n }\n\n /**\n * Rendering.\n */\n\n if (!hasSchemas || defaultModelsExpandDepth < 0) {\n return null\n }\n\n return (\n \n

    \n \n Schemas\n \n \n \n \n

    \n \n {Object.entries(schemas).map(([schemaName, schema]) => (\n \n ))}\n \n \n )\n}\n\nModels.propTypes = {\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specSelectors: PropTypes.shape({\n selectSchemas: PropTypes.func.isRequired,\n specResolvedSubtree: PropTypes.func.isRequired,\n }).isRequired,\n specActions: PropTypes.shape({\n requestResolvedSubtree: PropTypes.func.isRequired,\n }).isRequired,\n layoutSelectors: PropTypes.shape({\n isShown: PropTypes.func.isRequired,\n }).isRequired,\n layoutActions: PropTypes.shape({\n show: PropTypes.func.isRequired,\n readyToScroll: PropTypes.func.isRequired,\n }).isRequired,\n}\n\nexport default Models\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst VersionPragmaFilter = ({\n bypass,\n isSwagger2,\n isOAS3,\n isOAS31,\n alsoShow,\n children,\n}) => {\n if (bypass) {\n return
    {children}
    \n }\n\n if (isSwagger2 && (isOAS3 || isOAS31)) {\n return (\n
    \n {alsoShow}\n
    \n
    \n

    Unable to render this definition

    \n

    \n swagger and openapi fields cannot be\n present in the same Swagger or OpenAPI definition. Please remove\n one of the fields.\n

    \n

    \n Supported version fields are swagger: "2.0" and\n those that match openapi: 3.x.y (for example,{\" \"}\n openapi: 3.1.0).\n

    \n
    \n
    \n
    \n )\n }\n\n if (!isSwagger2 && !isOAS3 && !isOAS31) {\n return (\n
    \n {alsoShow}\n
    \n
    \n

    Unable to render this definition

    \n

    \n The provided definition does not specify a valid version field.\n

    \n

    \n Please indicate a valid Swagger or OpenAPI version field.\n Supported version fields are swagger: "2.0" and\n those that match openapi: 3.x.y (for example,{\" \"}\n openapi: 3.1.0).\n

    \n
    \n
    \n
    \n )\n }\n\n return
    {children}
    \n}\n\nVersionPragmaFilter.propTypes = {\n isSwagger2: PropTypes.bool.isRequired,\n isOAS3: PropTypes.bool.isRequired,\n isOAS31: PropTypes.bool.isRequired,\n bypass: PropTypes.bool,\n alsoShow: PropTypes.element,\n children: PropTypes.any,\n}\n\nexport default VersionPragmaFilter\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst Webhooks = ({ specSelectors, getComponent }) => {\n const operationDTOs = specSelectors.selectWebhooksOperations()\n const pathItemNames = Object.keys(operationDTOs)\n\n const OperationContainer = getComponent(\"OperationContainer\", true)\n\n if (pathItemNames.length === 0) return null\n\n return (\n
    \n

    Webhooks

    \n\n {pathItemNames.map((pathItemName) => (\n
    \n {operationDTOs[pathItemName].map((operationDTO) => (\n \n ))}\n
    \n ))}\n
    \n )\n}\n\nWebhooks.propTypes = {\n specSelectors: PropTypes.shape({\n selectWebhooksOperations: PropTypes.func.isRequired,\n }).isRequired,\n getComponent: PropTypes.func.isRequired,\n}\n\nexport default Webhooks\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nexport const isOAS31 = (jsSpec) => {\n const oasVersion = jsSpec.get(\"openapi\")\n\n return (\n typeof oasVersion === \"string\" && /^3\\.1\\.(?:[1-9]\\d*|0)$/.test(oasVersion)\n )\n}\n\n/**\n * Creates selector that returns value of the passed\n * selector when spec is OpenAPI 3.1.0., null otherwise.\n *\n * @param selector\n * @returns {function(*, ...[*]): function(*): (*|null)}\n */\nexport const createOnlyOAS31Selector =\n (selector) =>\n (state, ...args) =>\n (system) => {\n if (system.getSystem().specSelectors.isOAS31()) {\n const selectedValue = selector(state, ...args)\n return typeof selectedValue === \"function\"\n ? selectedValue(system)\n : selectedValue\n } else {\n return null\n }\n }\n\n/**\n * Creates selector wrapper that returns value of the passed\n * selector when spec is OpenAPI 3.1.0., calls original selector otherwise.\n *\n *\n * @param selector\n * @returns {function(*, *): function(*, ...[*]): (*)}\n */\nexport const createOnlyOAS31SelectorWrapper =\n (selector) =>\n (oriSelector, system) =>\n (state, ...args) => {\n if (system.getSystem().specSelectors.isOAS31()) {\n const selectedValue = selector(state, ...args)\n return typeof selectedValue === \"function\"\n ? selectedValue(oriSelector, system)\n : selectedValue\n } else {\n return oriSelector(...args)\n }\n }\n\n/**\n * Creates selector that provides system as the\n * second argument. This allows to create memoized\n * composed selectors from different plugins.\n *\n * @param selector\n * @returns {function(*, ...[*]): function(*): *}\n */\nexport const createSystemSelector =\n (selector) =>\n (state, ...args) =>\n (system) => {\n const selectedValue = selector(state, system, ...args)\n return typeof selectedValue === \"function\"\n ? selectedValue(system)\n : selectedValue\n }\n\n/* eslint-disable react/jsx-filename-extension */\n/**\n * Creates component wrapper that only wraps the component\n * when spec is OpenAPI 3.1.0. Otherwise, returns original\n * component with passed props.\n *\n * @param Component\n * @returns {function(*, *): function(*): *}\n */\nexport const createOnlyOAS31ComponentWrapper =\n (Component) => (Original, system) => (props) => {\n if (system.specSelectors.isOAS31()) {\n return (\n \n )\n }\n\n return \n }\n/* eslint-enable react/jsx-filename-extension */\n\n/**\n * Runs the fn replacement implementation when spec is OpenAPI 3.1.\n * Runs the fn original implementation otherwise.\n *\n * @param fn\n * @param system\n * @returns {{[p: string]: function(...[*]): *}}\n */\nexport const wrapOAS31Fn = (fn, system) => {\n const { fn: systemFn, specSelectors } = system\n\n return Object.fromEntries(\n Object.entries(fn).map(([name, newImpl]) => {\n const oriImpl = systemFn[name]\n const impl = (...args) =>\n specSelectors.isOAS31()\n ? newImpl(...args)\n : typeof oriImpl === \"function\"\n ? oriImpl(...args)\n : undefined\n\n return [name, impl]\n })\n )\n}\n","/**\n * @prettier\n */\nimport Webhooks from \"./components/webhooks\"\nimport License from \"./components/license\"\nimport Contact from \"./components/contact\"\nimport Info from \"./components/info\"\nimport JsonSchemaDialect from \"./components/json-schema-dialect\"\nimport VersionPragmaFilter from \"./components/version-pragma-filter\"\nimport Model from \"./components/model/model\"\nimport Models from \"./components/models/models\"\nimport LicenseWrapper from \"./wrap-components/license\"\nimport ContactWrapper from \"./wrap-components/contact\"\nimport InfoWrapper from \"./wrap-components/info\"\nimport ModelWrapper from \"./wrap-components/model\"\nimport ModelsWrapper from \"./wrap-components/models\"\nimport VersionPragmaFilterWrapper from \"./wrap-components/version-pragma-filter\"\nimport VersionStampWrapper from \"./wrap-components/version-stamp\"\nimport {\n isOAS31 as isOAS31Fn,\n createOnlyOAS31Selector as createOnlyOAS31SelectorFn,\n createSystemSelector as createSystemSelectorFn,\n} from \"./fn\"\nimport {\n license as selectLicense,\n contact as selectContact,\n webhooks as selectWebhooks,\n selectLicenseNameField,\n selectLicenseUrlField,\n selectLicenseIdentifierField,\n selectContactNameField,\n selectContactEmailField,\n selectContactUrlField,\n selectContactUrl,\n isOAS31 as selectIsOAS31,\n selectLicenseUrl,\n selectInfoTitleField,\n selectInfoSummaryField,\n selectInfoDescriptionField,\n selectInfoTermsOfServiceField,\n selectInfoTermsOfServiceUrl,\n selectExternalDocsDescriptionField,\n selectExternalDocsUrlField,\n selectExternalDocsUrl,\n selectWebhooksOperations,\n selectJsonSchemaDialectField,\n selectJsonSchemaDialectDefault,\n selectSchemas,\n} from \"./spec-extensions/selectors\"\nimport {\n isOAS3 as isOAS3SelectorWrapper,\n selectLicenseUrl as selectLicenseUrlWrapper,\n} from \"./spec-extensions/wrap-selectors\"\nimport { selectLicenseUrl as selectOAS31LicenseUrl } from \"./selectors\"\nimport JSONSchema202012KeywordExample from \"./json-schema-2020-12-extensions/components/keywords/Example\"\nimport JSONSchema202012KeywordXml from \"./json-schema-2020-12-extensions/components/keywords/Xml\"\nimport JSONSchema202012KeywordDiscriminator from \"./json-schema-2020-12-extensions/components/keywords/Discriminator/Discriminator\"\nimport JSONSchema202012KeywordExternalDocs from \"./json-schema-2020-12-extensions/components/keywords/ExternalDocs\"\nimport JSONSchema202012KeywordDescriptionWrapper from \"./json-schema-2020-12-extensions/wrap-components/keywords/Description\"\nimport JSONSchema202012KeywordDefaultWrapper from \"./json-schema-2020-12-extensions/wrap-components/keywords/Default\"\nimport JSONSchema202012KeywordPropertiesWrapper from \"./json-schema-2020-12-extensions/wrap-components/keywords/Properties\"\nimport afterLoad from \"./after-load\"\n\nconst OAS31Plugin = ({ fn }) => {\n const createSystemSelector = fn.createSystemSelector || createSystemSelectorFn\n const createOnlyOAS31Selector = fn.createOnlyOAS31Selector || createOnlyOAS31SelectorFn // prettier-ignore\n\n return {\n afterLoad,\n fn: {\n isOAS31: isOAS31Fn,\n createSystemSelector: createSystemSelectorFn,\n createOnlyOAS31Selector: createOnlyOAS31SelectorFn,\n },\n components: {\n Webhooks,\n JsonSchemaDialect,\n OAS31Info: Info,\n OAS31License: License,\n OAS31Contact: Contact,\n OAS31VersionPragmaFilter: VersionPragmaFilter,\n OAS31Model: Model,\n OAS31Models: Models,\n JSONSchema202012KeywordExample,\n JSONSchema202012KeywordXml,\n JSONSchema202012KeywordDiscriminator,\n JSONSchema202012KeywordExternalDocs,\n },\n wrapComponents: {\n InfoContainer: InfoWrapper,\n License: LicenseWrapper,\n Contact: ContactWrapper,\n VersionPragmaFilter: VersionPragmaFilterWrapper,\n VersionStamp: VersionStampWrapper,\n Model: ModelWrapper,\n Models: ModelsWrapper,\n JSONSchema202012KeywordDescription:\n JSONSchema202012KeywordDescriptionWrapper,\n JSONSchema202012KeywordDefault: JSONSchema202012KeywordDefaultWrapper,\n JSONSchema202012KeywordProperties:\n JSONSchema202012KeywordPropertiesWrapper,\n },\n statePlugins: {\n spec: {\n selectors: {\n isOAS31: createSystemSelector(selectIsOAS31),\n\n license: selectLicense,\n selectLicenseNameField,\n selectLicenseUrlField,\n selectLicenseIdentifierField: createOnlyOAS31Selector(selectLicenseIdentifierField), // prettier-ignore\n selectLicenseUrl: createSystemSelector(selectLicenseUrl),\n\n contact: selectContact,\n selectContactNameField,\n selectContactEmailField,\n selectContactUrlField,\n selectContactUrl: createSystemSelector(selectContactUrl),\n\n selectInfoTitleField,\n selectInfoSummaryField: createOnlyOAS31Selector(selectInfoSummaryField), // prettier-ignore\n selectInfoDescriptionField,\n selectInfoTermsOfServiceField,\n selectInfoTermsOfServiceUrl: createSystemSelector(selectInfoTermsOfServiceUrl), // prettier-ignore\n\n selectExternalDocsDescriptionField,\n selectExternalDocsUrlField,\n selectExternalDocsUrl: createSystemSelector(selectExternalDocsUrl),\n\n webhooks: createOnlyOAS31Selector(selectWebhooks),\n selectWebhooksOperations: createOnlyOAS31Selector(createSystemSelector(selectWebhooksOperations)), // prettier-ignore\n\n selectJsonSchemaDialectField,\n selectJsonSchemaDialectDefault,\n\n selectSchemas: createSystemSelector(selectSchemas),\n },\n wrapSelectors: {\n isOAS3: isOAS3SelectorWrapper,\n selectLicenseUrl: selectLicenseUrlWrapper,\n },\n },\n oas31: {\n selectors: {\n selectLicenseUrl: createOnlyOAS31Selector(createSystemSelector(selectOAS31LicenseUrl)), // prettier-ignore\n },\n },\n },\n }\n}\n\nexport default OAS31Plugin\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst Description = ({ schema, getSystem }) => {\n if (!schema?.description) return null\n\n const { getComponent } = getSystem()\n const MarkDown = getComponent(\"Markdown\")\n\n return (\n
    \n
    \n \n
    \n
    \n )\n}\n\nDescription.propTypes = {\n schema: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]).isRequired,\n getSystem: PropTypes.func.isRequired,\n}\n\nexport default Description\n","/**\n * @prettier\n */\nimport React, { useCallback, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport classNames from \"classnames\"\n\nimport DiscriminatorMapping from \"./DiscriminatorMapping\"\n\nconst Discriminator = ({ schema, getSystem }) => {\n const discriminator = schema?.discriminator || {}\n const { fn, getComponent } = getSystem()\n const { useIsExpandedDeeply, useComponent } = fn.jsonSchema202012\n const isExpandedDeeply = useIsExpandedDeeply()\n const isExpandable = !!discriminator.mapping\n const [expanded, setExpanded] = useState(isExpandedDeeply)\n const [expandedDeeply, setExpandedDeeply] = useState(false)\n const Accordion = useComponent(\"Accordion\")\n const ExpandDeepButton = useComponent(\"ExpandDeepButton\")\n const JSONSchemaDeepExpansionContext = getComponent(\n \"JSONSchema202012DeepExpansionContext\"\n )()\n\n /**\n * Event handlers.\n */\n const handleExpansion = useCallback(() => {\n setExpanded((prev) => !prev)\n }, [])\n const handleExpansionDeep = useCallback((e, expandedDeepNew) => {\n setExpanded(expandedDeepNew)\n setExpandedDeeply(expandedDeepNew)\n }, [])\n\n /**\n * Rendering.\n */\n if (Object.keys(discriminator).length === 0) {\n return null\n }\n\n return (\n \n
    \n {isExpandable ? (\n <>\n \n \n Discriminator\n \n \n \n \n ) : (\n \n Discriminator\n \n )}\n\n {discriminator.propertyName && (\n \n {discriminator.propertyName}\n \n )}\n \n object\n \n \n {expanded && (\n
  • \n \n
  • \n )}\n \n
    \n
    \n )\n}\n\nDiscriminator.propTypes = {\n schema: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]).isRequired,\n getSystem: PropTypes.func.isRequired,\n}\n\nexport default Discriminator\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst DiscriminatorMapping = ({ discriminator }) => {\n const mapping = discriminator?.mapping || {}\n\n if (Object.keys(mapping).length === 0) {\n return null\n }\n\n return Object.entries(mapping).map(([key, value]) => (\n
    \n \n {key}\n \n \n {value}\n \n
    \n ))\n}\n\nDiscriminatorMapping.propTypes = {\n discriminator: PropTypes.shape({\n mapping: PropTypes.any,\n }),\n}\n\nDiscriminatorMapping.defaultProps = {\n mapping: undefined,\n}\n\nexport default DiscriminatorMapping\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst Example = ({ schema, getSystem }) => {\n const { fn } = getSystem()\n const { hasKeyword, stringify } = fn.jsonSchema202012.useFn()\n\n if (!hasKeyword(schema, \"example\")) return null\n\n return (\n
    \n \n Example\n \n \n {stringify(schema.example)}\n \n
    \n )\n}\n\nExample.propTypes = {\n schema: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]).isRequired,\n getSystem: PropTypes.func.isRequired,\n}\n\nexport default Example\n","/**\n * @prettier\n */\nimport React, { useCallback, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport classNames from \"classnames\"\n\nimport { sanitizeUrl } from \"core/utils\"\n\nconst ExternalDocs = ({ schema, getSystem }) => {\n const externalDocs = schema?.externalDocs || {}\n const { fn, getComponent } = getSystem()\n const { useIsExpandedDeeply, useComponent } = fn.jsonSchema202012\n const isExpandedDeeply = useIsExpandedDeeply()\n const isExpandable = !!(externalDocs.description || externalDocs.url)\n const [expanded, setExpanded] = useState(isExpandedDeeply)\n const [expandedDeeply, setExpandedDeeply] = useState(false)\n const Accordion = useComponent(\"Accordion\")\n const ExpandDeepButton = useComponent(\"ExpandDeepButton\")\n const KeywordDescription = getComponent(\"JSONSchema202012KeywordDescription\")\n const Link = getComponent(\"Link\")\n const JSONSchemaDeepExpansionContext = getComponent(\n \"JSONSchema202012DeepExpansionContext\"\n )()\n\n /**\n * Event handlers.\n */\n const handleExpansion = useCallback(() => {\n setExpanded((prev) => !prev)\n }, [])\n const handleExpansionDeep = useCallback((e, expandedDeepNew) => {\n setExpanded(expandedDeepNew)\n setExpandedDeeply(expandedDeepNew)\n }, [])\n\n /**\n * Rendering.\n */\n if (Object.keys(externalDocs).length === 0) {\n return null\n }\n\n return (\n \n
    \n {isExpandable ? (\n <>\n \n \n External documentation\n \n \n \n \n ) : (\n \n External documentation\n \n )}\n \n object\n \n \n {expanded && (\n <>\n {externalDocs.description && (\n
  • \n \n
  • \n )}\n\n {externalDocs.url && (\n
  • \n
    \n \n url\n \n \n \n {externalDocs.url}\n \n \n
    \n
  • \n )}\n \n )}\n \n
    \n
    \n )\n}\n\nExternalDocs.propTypes = {\n schema: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]).isRequired,\n getSystem: PropTypes.func.isRequired,\n}\n\nexport default ExternalDocs\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\nimport classNames from \"classnames\"\n\nconst Properties = ({ schema, getSystem }) => {\n const { fn } = getSystem()\n const { useComponent } = fn.jsonSchema202012\n const { getDependentRequired, getProperties } = fn.jsonSchema202012.useFn()\n const config = fn.jsonSchema202012.useConfig()\n const required = Array.isArray(schema?.required) ? schema.required : []\n const JSONSchema = useComponent(\"JSONSchema\")\n const properties = getProperties(schema, config)\n\n /**\n * Rendering.\n */\n if (Object.keys(properties).length === 0) {\n return null\n }\n\n return (\n
    \n
      \n {Object.entries(properties).map(([propertyName, propertySchema]) => {\n const isRequired = required.includes(propertyName)\n const dependentRequired = getDependentRequired(propertyName, schema)\n\n return (\n \n \n \n )\n })}\n
    \n
    \n )\n}\n\nProperties.propTypes = {\n schema: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]).isRequired,\n getSystem: PropTypes.func.isRequired,\n}\n\nexport default Properties\n","/**\n * @prettier\n */\nimport React, { useCallback, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport classNames from \"classnames\"\n\nconst Xml = ({ schema, getSystem }) => {\n const xml = schema?.xml || {}\n const { fn, getComponent } = getSystem()\n const { useIsExpandedDeeply, useComponent } = fn.jsonSchema202012\n const isExpandedDeeply = useIsExpandedDeeply()\n const isExpandable = !!(xml.name || xml.namespace || xml.prefix)\n const [expanded, setExpanded] = useState(isExpandedDeeply)\n const [expandedDeeply, setExpandedDeeply] = useState(false)\n const Accordion = useComponent(\"Accordion\")\n const ExpandDeepButton = useComponent(\"ExpandDeepButton\")\n const JSONSchemaDeepExpansionContext = getComponent(\n \"JSONSchema202012DeepExpansionContext\"\n )()\n\n /**\n * Event handlers.\n */\n const handleExpansion = useCallback(() => {\n setExpanded((prev) => !prev)\n }, [])\n const handleExpansionDeep = useCallback((e, expandedDeepNew) => {\n setExpanded(expandedDeepNew)\n setExpandedDeeply(expandedDeepNew)\n }, [])\n\n /**\n * Rendering.\n */\n if (Object.keys(xml).length === 0) {\n return null\n }\n\n return (\n \n
    \n {isExpandable ? (\n <>\n \n \n XML\n \n \n \n \n ) : (\n \n XML\n \n )}\n {xml.attribute === true && (\n \n attribute\n \n )}\n {xml.wrapped === true && (\n \n wrapped\n \n )}\n \n object\n \n \n {expanded && (\n <>\n {xml.name && (\n
  • \n
    \n \n name\n \n \n {xml.name}\n \n
    \n
  • \n )}\n\n {xml.namespace && (\n
  • \n
    \n \n namespace\n \n \n {xml.namespace}\n \n
    \n
  • \n )}\n\n {xml.prefix && (\n
  • \n
    \n \n prefix\n \n \n {xml.prefix}\n \n
    \n
  • \n )}\n \n )}\n \n
    \n
    \n )\n}\n\nXml.propTypes = {\n schema: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]).isRequired,\n getSystem: PropTypes.func.isRequired,\n}\n\nexport default Xml\n","/**\n * @prettier\n */\nexport const makeIsExpandable = (original, getSystem) => {\n const { fn } = getSystem()\n\n if (typeof original !== \"function\") {\n return null\n }\n\n const { hasKeyword } = fn.jsonSchema202012\n\n return (schema) =>\n original(schema) ||\n hasKeyword(schema, \"example\") ||\n schema?.xml ||\n schema?.discriminator ||\n schema?.externalDocs\n}\n\nexport const getProperties = (\n schema,\n { includeReadOnly, includeWriteOnly }\n) => {\n // shortcut\n if (!schema?.properties) return {}\n\n const properties = Object.entries(schema.properties)\n const filteredProperties = properties.filter(([, value]) => {\n const isReadOnly = value?.readOnly === true\n const isWriteOnly = value?.writeOnly === true\n\n return (\n (!isReadOnly || includeReadOnly) && (!isWriteOnly || includeWriteOnly)\n )\n })\n\n return Object.fromEntries(filteredProperties)\n}\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport { createOnlyOAS31ComponentWrapper } from \"../../../fn\"\n\nconst DefaultWrapper = createOnlyOAS31ComponentWrapper(\n ({ schema, getSystem, originalComponent: KeywordDefault }) => {\n const { getComponent } = getSystem()\n const KeywordDiscriminator = getComponent(\n \"JSONSchema202012KeywordDiscriminator\"\n )\n const KeywordXml = getComponent(\"JSONSchema202012KeywordXml\")\n const KeywordExample = getComponent(\"JSONSchema202012KeywordExample\")\n const KeywordExternalDocs = getComponent(\n \"JSONSchema202012KeywordExternalDocs\"\n )\n\n return (\n <>\n \n \n \n \n \n \n )\n }\n)\n\nexport default DefaultWrapper\n","/**\n * @prettier\n */\nimport DescriptionKeyword from \"../../components/keywords/Description\"\nimport { createOnlyOAS31ComponentWrapper } from \"../../../fn\"\n\nconst DescriptionWrapper = createOnlyOAS31ComponentWrapper(DescriptionKeyword)\n\nexport default DescriptionWrapper\n","/**\n * @prettier\n */\nimport PropertiesKeyword from \"../../components/keywords/Properties\"\nimport { createOnlyOAS31ComponentWrapper } from \"../../../fn\"\n\nconst PropertiesWrapper = createOnlyOAS31ComponentWrapper(PropertiesKeyword)\n\nexport default PropertiesWrapper\n","/**\n * @prettier\n */\nimport { createSelector } from \"reselect\"\n\nimport { safeBuildUrl } from \"core/utils/url\"\n\nexport const selectLicenseUrl = createSelector(\n (state, system) => system.specSelectors.url(),\n (state, system) => system.oas3Selectors.selectedServer(),\n (state, system) => system.specSelectors.selectLicenseUrlField(),\n (state, system) => system.specSelectors.selectLicenseIdentifierField(),\n (specUrl, selectedServer, url, identifier) => {\n if (url) {\n return safeBuildUrl(url, specUrl, { selectedServer })\n }\n\n if (identifier) {\n return `https://spdx.org/licenses/${identifier}.html`\n }\n\n return undefined\n }\n)\n","/**\n * @prettier\n */\nimport { List, Map } from \"immutable\"\nimport { createSelector } from \"reselect\"\n\nimport { safeBuildUrl } from \"core/utils/url\"\nimport { isOAS31 as isOAS31Fn } from \"../fn\"\n\nconst map = Map()\n\nexport const isOAS31 = createSelector(\n (state, system) => system.specSelectors.specJson(),\n isOAS31Fn\n)\n\nexport const webhooks = () => (system) => {\n return system.specSelectors.specJson().get(\"webhooks\", map)\n}\n\n/**\n * `specResolvedSubtree` selector is needed as input selector,\n * so that we regenerate the selected result whenever the lazy\n * resolution happens.\n */\nexport const selectWebhooksOperations = createSelector(\n (state, system) => system.specSelectors.webhooks(),\n (state, system) => system.specSelectors.validOperationMethods(),\n (state, system) => system.specSelectors.specResolvedSubtree([\"webhooks\"]),\n (webhooks, validOperationMethods) => {\n if (!Map.isMap(webhooks)) return {}\n\n return webhooks\n .reduce((allOperations, pathItem, pathItemName) => {\n if (!Map.isMap(pathItem)) return allOperations\n\n const pathItemOperations = pathItem\n .entrySeq()\n .filter(([key]) => validOperationMethods.includes(key))\n .map(([method, operation]) => ({\n operation: Map({ operation }),\n method,\n path: pathItemName,\n specPath: List([\"webhooks\", pathItemName, method]),\n }))\n\n return allOperations.concat(pathItemOperations)\n }, List())\n .groupBy((operationDTO) => operationDTO.path)\n .map((operations) => operations.toArray())\n .toObject()\n }\n)\n\nexport const license = () => (system) => {\n return system.specSelectors.info().get(\"license\", map)\n}\n\nexport const selectLicenseNameField = () => (system) => {\n return system.specSelectors.license().get(\"name\", \"License\")\n}\n\nexport const selectLicenseUrlField = () => (system) => {\n return system.specSelectors.license().get(\"url\")\n}\n\nexport const selectLicenseUrl = createSelector(\n (state, system) => system.specSelectors.url(),\n (state, system) => system.oas3Selectors.selectedServer(),\n (state, system) => system.specSelectors.selectLicenseUrlField(),\n (specUrl, selectedServer, url) => {\n if (url) {\n return safeBuildUrl(url, specUrl, { selectedServer })\n }\n\n return undefined\n }\n)\n\nexport const selectLicenseIdentifierField = () => (system) => {\n return system.specSelectors.license().get(\"identifier\")\n}\n\nexport const contact = () => (system) => {\n return system.specSelectors.info().get(\"contact\", map)\n}\n\nexport const selectContactNameField = () => (system) => {\n return system.specSelectors.contact().get(\"name\", \"the developer\")\n}\n\nexport const selectContactEmailField = () => (system) => {\n return system.specSelectors.contact().get(\"email\")\n}\n\nexport const selectContactUrlField = () => (system) => {\n return system.specSelectors.contact().get(\"url\")\n}\n\nexport const selectContactUrl = createSelector(\n (state, system) => system.specSelectors.url(),\n (state, system) => system.oas3Selectors.selectedServer(),\n (state, system) => system.specSelectors.selectContactUrlField(),\n (specUrl, selectedServer, url) => {\n if (url) {\n return safeBuildUrl(url, specUrl, { selectedServer })\n }\n\n return undefined\n }\n)\n\nexport const selectInfoTitleField = () => (system) => {\n return system.specSelectors.info().get(\"title\")\n}\n\nexport const selectInfoSummaryField = () => (system) => {\n return system.specSelectors.info().get(\"summary\")\n}\n\nexport const selectInfoDescriptionField = () => (system) => {\n return system.specSelectors.info().get(\"description\")\n}\n\nexport const selectInfoTermsOfServiceField = () => (system) => {\n return system.specSelectors.info().get(\"termsOfService\")\n}\n\nexport const selectInfoTermsOfServiceUrl = createSelector(\n (state, system) => system.specSelectors.url(),\n (state, system) => system.oas3Selectors.selectedServer(),\n (state, system) => system.specSelectors.selectInfoTermsOfServiceField(),\n (specUrl, selectedServer, termsOfService) => {\n if (termsOfService) {\n return safeBuildUrl(termsOfService, specUrl, { selectedServer })\n }\n\n return undefined\n }\n)\n\nexport const selectExternalDocsDescriptionField = () => (system) => {\n return system.specSelectors.externalDocs().get(\"description\")\n}\n\nexport const selectExternalDocsUrlField = () => (system) => {\n return system.specSelectors.externalDocs().get(\"url\")\n}\n\nexport const selectExternalDocsUrl = createSelector(\n (state, system) => system.specSelectors.url(),\n (state, system) => system.oas3Selectors.selectedServer(),\n (state, system) => system.specSelectors.selectExternalDocsUrlField(),\n (specUrl, selectedServer, url) => {\n if (url) {\n return safeBuildUrl(url, specUrl, { selectedServer })\n }\n\n return undefined\n }\n)\n\nexport const selectJsonSchemaDialectField = () => (system) => {\n return system.specSelectors.specJson().get(\"jsonSchemaDialect\")\n}\n\nexport const selectJsonSchemaDialectDefault = () =>\n \"https://spec.openapis.org/oas/3.1/dialect/base\"\n\nexport const selectSchemas = createSelector(\n (state, system) => system.specSelectors.definitions(),\n (state, system) =>\n system.specSelectors.specResolvedSubtree([\"components\", \"schemas\"]),\n\n (rawSchemas, resolvedSchemas) => {\n if (!Map.isMap(rawSchemas)) return {}\n if (!Map.isMap(resolvedSchemas)) return rawSchemas.toJS()\n\n return Object.entries(rawSchemas.toJS()).reduce(\n (acc, [schemaName, rawSchema]) => {\n const resolvedSchema = resolvedSchemas.get(schemaName)\n acc[schemaName] = resolvedSchema?.toJS() || rawSchema\n return acc\n },\n {}\n )\n }\n)\n","/**\n * @prettier\n */\n\nimport { createOnlyOAS31SelectorWrapper } from \"../fn\"\n\nexport const isOAS3 =\n (oriSelector, system) =>\n (state, ...args) => {\n const isOAS31 = system.specSelectors.isOAS31()\n return isOAS31 || oriSelector(...args)\n }\n\nexport const selectLicenseUrl = createOnlyOAS31SelectorWrapper(\n () => (oriSelector, system) => {\n return system.oas31Selectors.selectLicenseUrl()\n }\n)\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { createOnlyOAS31ComponentWrapper } from \"../fn\"\n\nconst ContactWrapper = createOnlyOAS31ComponentWrapper(({ getSystem }) => {\n const system = getSystem()\n const OAS31Contact = system.getComponent(\"OAS31Contact\", true)\n\n return \n})\n\nexport default ContactWrapper\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { createOnlyOAS31ComponentWrapper } from \"../fn\"\n\nconst InfoWrapper = createOnlyOAS31ComponentWrapper(({ getSystem }) => {\n const system = getSystem()\n const OAS31Info = system.getComponent(\"OAS31Info\", true)\n\n return \n})\n\nexport default InfoWrapper\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { createOnlyOAS31ComponentWrapper } from \"../fn\"\n\nconst LicenseWrapper = createOnlyOAS31ComponentWrapper(({ getSystem }) => {\n const system = getSystem()\n const OAS31License = system.getComponent(\"OAS31License\", true)\n\n return \n})\n\nexport default LicenseWrapper\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { createOnlyOAS31ComponentWrapper } from \"../fn\"\nimport {\n makeIsExpandable,\n getProperties,\n} from \"../json-schema-2020-12-extensions/fn\"\n\nconst ModelWrapper = createOnlyOAS31ComponentWrapper(\n ({ getSystem, ...props }) => {\n const system = getSystem()\n const { getComponent, fn, getConfigs } = system\n const configs = getConfigs()\n\n const Model = getComponent(\"OAS31Model\")\n const JSONSchema = getComponent(\"JSONSchema202012\")\n const Keyword$schema = getComponent(\"JSONSchema202012Keyword$schema\")\n const Keyword$vocabulary = getComponent(\n \"JSONSchema202012Keyword$vocabulary\"\n )\n const Keyword$id = getComponent(\"JSONSchema202012Keyword$id\")\n const Keyword$anchor = getComponent(\"JSONSchema202012Keyword$anchor\")\n const Keyword$dynamicAnchor = getComponent(\n \"JSONSchema202012Keyword$dynamicAnchor\"\n )\n const Keyword$ref = getComponent(\"JSONSchema202012Keyword$ref\")\n const Keyword$dynamicRef = getComponent(\n \"JSONSchema202012Keyword$dynamicRef\"\n )\n const Keyword$defs = getComponent(\"JSONSchema202012Keyword$defs\")\n const Keyword$comment = getComponent(\"JSONSchema202012Keyword$comment\")\n const KeywordAllOf = getComponent(\"JSONSchema202012KeywordAllOf\")\n const KeywordAnyOf = getComponent(\"JSONSchema202012KeywordAnyOf\")\n const KeywordOneOf = getComponent(\"JSONSchema202012KeywordOneOf\")\n const KeywordNot = getComponent(\"JSONSchema202012KeywordNot\")\n const KeywordIf = getComponent(\"JSONSchema202012KeywordIf\")\n const KeywordThen = getComponent(\"JSONSchema202012KeywordThen\")\n const KeywordElse = getComponent(\"JSONSchema202012KeywordElse\")\n const KeywordDependentSchemas = getComponent(\n \"JSONSchema202012KeywordDependentSchemas\"\n )\n const KeywordPrefixItems = getComponent(\n \"JSONSchema202012KeywordPrefixItems\"\n )\n const KeywordItems = getComponent(\"JSONSchema202012KeywordItems\")\n const KeywordContains = getComponent(\"JSONSchema202012KeywordContains\")\n const KeywordProperties = getComponent(\"JSONSchema202012KeywordProperties\")\n const KeywordPatternProperties = getComponent(\n \"JSONSchema202012KeywordPatternProperties\"\n )\n const KeywordAdditionalProperties = getComponent(\n \"JSONSchema202012KeywordAdditionalProperties\"\n )\n const KeywordPropertyNames = getComponent(\n \"JSONSchema202012KeywordPropertyNames\"\n )\n const KeywordUnevaluatedItems = getComponent(\n \"JSONSchema202012KeywordUnevaluatedItems\"\n )\n const KeywordUnevaluatedProperties = getComponent(\n \"JSONSchema202012KeywordUnevaluatedProperties\"\n )\n const KeywordType = getComponent(\"JSONSchema202012KeywordType\")\n const KeywordEnum = getComponent(\"JSONSchema202012KeywordEnum\")\n const KeywordConst = getComponent(\"JSONSchema202012KeywordConst\")\n const KeywordConstraint = getComponent(\"JSONSchema202012KeywordConstraint\")\n const KeywordDependentRequired = getComponent(\n \"JSONSchema202012KeywordDependentRequired\"\n )\n const KeywordContentSchema = getComponent(\n \"JSONSchema202012KeywordContentSchema\"\n )\n const KeywordTitle = getComponent(\"JSONSchema202012KeywordTitle\")\n const KeywordDescription = getComponent(\n \"JSONSchema202012KeywordDescription\"\n )\n const KeywordDefault = getComponent(\"JSONSchema202012KeywordDefault\")\n const KeywordDeprecated = getComponent(\"JSONSchema202012KeywordDeprecated\")\n const KeywordReadOnly = getComponent(\"JSONSchema202012KeywordReadOnly\")\n const KeywordWriteOnly = getComponent(\"JSONSchema202012KeywordWriteOnly\")\n const Accordion = getComponent(\"JSONSchema202012Accordion\")\n const ExpandDeepButton = getComponent(\"JSONSchema202012ExpandDeepButton\")\n const ChevronRightIcon = getComponent(\"JSONSchema202012ChevronRightIcon\")\n const withSchemaContext = getComponent(\"withJSONSchema202012Context\")\n\n const ModelWithJSONSchemaContext = withSchemaContext(Model, {\n config: {\n default$schema: \"https://spec.openapis.org/oas/3.1/dialect/base\",\n defaultExpandedLevels: configs.defaultModelExpandDepth,\n includeReadOnly: Boolean(props.includeReadOnly),\n includeWriteOnly: Boolean(props.includeWriteOnly),\n },\n components: {\n JSONSchema,\n Keyword$schema,\n Keyword$vocabulary,\n Keyword$id,\n Keyword$anchor,\n Keyword$dynamicAnchor,\n Keyword$ref,\n Keyword$dynamicRef,\n Keyword$defs,\n Keyword$comment,\n KeywordAllOf,\n KeywordAnyOf,\n KeywordOneOf,\n KeywordNot,\n KeywordIf,\n KeywordThen,\n KeywordElse,\n KeywordDependentSchemas,\n KeywordPrefixItems,\n KeywordItems,\n KeywordContains,\n KeywordProperties,\n KeywordPatternProperties,\n KeywordAdditionalProperties,\n KeywordPropertyNames,\n KeywordUnevaluatedItems,\n KeywordUnevaluatedProperties,\n KeywordType,\n KeywordEnum,\n KeywordConst,\n KeywordConstraint,\n KeywordDependentRequired,\n KeywordContentSchema,\n KeywordTitle,\n KeywordDescription,\n KeywordDefault,\n KeywordDeprecated,\n KeywordReadOnly,\n KeywordWriteOnly,\n Accordion,\n ExpandDeepButton,\n ChevronRightIcon,\n },\n fn: {\n upperFirst: fn.upperFirst,\n isExpandable: makeIsExpandable(\n fn.jsonSchema202012.isExpandable,\n getSystem\n ),\n getProperties,\n },\n })\n\n return \n }\n)\n\nexport default ModelWrapper\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { createOnlyOAS31ComponentWrapper } from \"../fn\"\n\nconst ModelsWrapper = createOnlyOAS31ComponentWrapper(({ getSystem }) => {\n const { getComponent, fn, getConfigs } = getSystem()\n const configs = getConfigs()\n\n if (ModelsWrapper.ModelsWithJSONSchemaContext) {\n return \n }\n\n const Models = getComponent(\"OAS31Models\", true)\n const JSONSchema = getComponent(\"JSONSchema202012\")\n const Keyword$schema = getComponent(\"JSONSchema202012Keyword$schema\")\n const Keyword$vocabulary = getComponent(\"JSONSchema202012Keyword$vocabulary\")\n const Keyword$id = getComponent(\"JSONSchema202012Keyword$id\")\n const Keyword$anchor = getComponent(\"JSONSchema202012Keyword$anchor\")\n const Keyword$dynamicAnchor = getComponent(\n \"JSONSchema202012Keyword$dynamicAnchor\"\n )\n const Keyword$ref = getComponent(\"JSONSchema202012Keyword$ref\")\n const Keyword$dynamicRef = getComponent(\"JSONSchema202012Keyword$dynamicRef\")\n const Keyword$defs = getComponent(\"JSONSchema202012Keyword$defs\")\n const Keyword$comment = getComponent(\"JSONSchema202012Keyword$comment\")\n const KeywordAllOf = getComponent(\"JSONSchema202012KeywordAllOf\")\n const KeywordAnyOf = getComponent(\"JSONSchema202012KeywordAnyOf\")\n const KeywordOneOf = getComponent(\"JSONSchema202012KeywordOneOf\")\n const KeywordNot = getComponent(\"JSONSchema202012KeywordNot\")\n const KeywordIf = getComponent(\"JSONSchema202012KeywordIf\")\n const KeywordThen = getComponent(\"JSONSchema202012KeywordThen\")\n const KeywordElse = getComponent(\"JSONSchema202012KeywordElse\")\n const KeywordDependentSchemas = getComponent(\n \"JSONSchema202012KeywordDependentSchemas\"\n )\n const KeywordPrefixItems = getComponent(\"JSONSchema202012KeywordPrefixItems\")\n const KeywordItems = getComponent(\"JSONSchema202012KeywordItems\")\n const KeywordContains = getComponent(\"JSONSchema202012KeywordContains\")\n const KeywordProperties = getComponent(\"JSONSchema202012KeywordProperties\")\n const KeywordPatternProperties = getComponent(\n \"JSONSchema202012KeywordPatternProperties\"\n )\n const KeywordAdditionalProperties = getComponent(\n \"JSONSchema202012KeywordAdditionalProperties\"\n )\n const KeywordPropertyNames = getComponent(\n \"JSONSchema202012KeywordPropertyNames\"\n )\n const KeywordUnevaluatedItems = getComponent(\n \"JSONSchema202012KeywordUnevaluatedItems\"\n )\n const KeywordUnevaluatedProperties = getComponent(\n \"JSONSchema202012KeywordUnevaluatedProperties\"\n )\n const KeywordType = getComponent(\"JSONSchema202012KeywordType\")\n const KeywordEnum = getComponent(\"JSONSchema202012KeywordEnum\")\n const KeywordConst = getComponent(\"JSONSchema202012KeywordConst\")\n const KeywordConstraint = getComponent(\"JSONSchema202012KeywordConstraint\")\n const KeywordDependentRequired = getComponent(\n \"JSONSchema202012KeywordDependentRequired\"\n )\n const KeywordContentSchema = getComponent(\n \"JSONSchema202012KeywordContentSchema\"\n )\n const KeywordTitle = getComponent(\"JSONSchema202012KeywordTitle\")\n const KeywordDescription = getComponent(\"JSONSchema202012KeywordDescription\")\n const KeywordDefault = getComponent(\"JSONSchema202012KeywordDefault\")\n const KeywordDeprecated = getComponent(\"JSONSchema202012KeywordDeprecated\")\n const KeywordReadOnly = getComponent(\"JSONSchema202012KeywordReadOnly\")\n const KeywordWriteOnly = getComponent(\"JSONSchema202012KeywordWriteOnly\")\n const Accordion = getComponent(\"JSONSchema202012Accordion\")\n const ExpandDeepButton = getComponent(\"JSONSchema202012ExpandDeepButton\")\n const ChevronRightIcon = getComponent(\"JSONSchema202012ChevronRightIcon\")\n const withSchemaContext = getComponent(\"withJSONSchema202012Context\")\n\n // we cache the HOC as recreating it with every re-render is quite expensive\n ModelsWrapper.ModelsWithJSONSchemaContext = withSchemaContext(Models, {\n config: {\n default$schema: \"https://spec.openapis.org/oas/3.1/dialect/base\",\n defaultExpandedLevels: configs.defaultModelsExpandDepth - 1,\n includeReadOnly: true,\n includeWriteOnly: true,\n },\n components: {\n JSONSchema,\n Keyword$schema,\n Keyword$vocabulary,\n Keyword$id,\n Keyword$anchor,\n Keyword$dynamicAnchor,\n Keyword$ref,\n Keyword$dynamicRef,\n Keyword$defs,\n Keyword$comment,\n KeywordAllOf,\n KeywordAnyOf,\n KeywordOneOf,\n KeywordNot,\n KeywordIf,\n KeywordThen,\n KeywordElse,\n KeywordDependentSchemas,\n KeywordPrefixItems,\n KeywordItems,\n KeywordContains,\n KeywordProperties,\n KeywordPatternProperties,\n KeywordAdditionalProperties,\n KeywordPropertyNames,\n KeywordUnevaluatedItems,\n KeywordUnevaluatedProperties,\n KeywordType,\n KeywordEnum,\n KeywordConst,\n KeywordConstraint,\n KeywordDependentRequired,\n KeywordContentSchema,\n KeywordTitle,\n KeywordDescription,\n KeywordDefault,\n KeywordDeprecated,\n KeywordReadOnly,\n KeywordWriteOnly,\n Accordion,\n ExpandDeepButton,\n ChevronRightIcon,\n },\n fn: {\n upperFirst: fn.upperFirst,\n isExpandable: fn.jsonSchema202012.isExpandable,\n getProperties: fn.jsonSchema202012.getProperties,\n },\n })\n\n return \n})\n\nModelsWrapper.ModelsWithJSONSchemaContext = null\n\nexport default ModelsWrapper\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nconst VersionPragmaFilterWrapper = (Original, system) => (props) => {\n const isOAS31 = system.specSelectors.isOAS31()\n\n const OAS31VersionPragmaFilter = system.getComponent(\n \"OAS31VersionPragmaFilter\"\n )\n\n return \n}\n\nexport default VersionPragmaFilterWrapper\n","/**\n * @prettier\n */\nimport React from \"react\"\n\nimport { createOnlyOAS31ComponentWrapper } from \"../fn\"\n\nconst VersionStampWrapper = createOnlyOAS31ComponentWrapper(\n ({ originalComponent: Original, ...restProps }) => (\n \n \n \n
    OAS 3.1
    \n
    \n
    \n )\n)\n\nexport default VersionStampWrapper\n","let engaged = false\n\nexport default function() {\n\n return {\n statePlugins: {\n spec: {\n wrapActions: {\n updateSpec: (ori) => (...args) => {\n engaged = true\n return ori(...args)\n },\n updateJsonSpec: (ori, system) => (...args) => {\n const cb = system.getConfigs().onComplete\n if(engaged && typeof cb === \"function\") {\n // call `onComplete` on next tick, which allows React to\n // reconcile the DOM before we notify the user\n setTimeout(cb, 0)\n engaged = false\n }\n\n return ori(...args)\n }\n }\n }\n }\n }\n}\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_repeat_18ab8b74__[\"default\"] });","import win from \"../../window\"\nimport { Map } from \"immutable\"\n\n/**\n * if duplicate key name existed from FormData entries,\n * we mutated the key name by appending a hashIdx\n * @param {String} k - possibly mutated key name\n * @return {String} - src key name\n */\nconst extractKey = (k) => {\n const hashIdx = \"_**[]\"\n if (k.indexOf(hashIdx) < 0) {\n return k\n }\n return k.split(hashIdx)[0].trim()\n}\n\nconst escapeShell = (str) => {\n if (str === \"-d \") {\n return str\n }\n // eslint-disable-next-line no-useless-escape\n if (!/^[_\\/-]/g.test(str))\n return (\"'\" + str\n .replace(/'/g, \"'\\\\''\") + \"'\")\n else\n return str\n}\n\nconst escapeCMD = (str) => {\n str = str\n .replace(/\\^/g, \"^^\")\n .replace(/\\\\\"/g, \"\\\\\\\\\\\"\")\n .replace(/\"/g, \"\\\"\\\"\")\n .replace(/\\n/g, \"^\\n\")\n if (str === \"-d \") {\n return str\n .replace(/-d /g, \"-d ^\\n\")\n }\n // eslint-disable-next-line no-useless-escape\n if (!/^[_\\/-]/g.test(str))\n return \"\\\"\" + str + \"\\\"\"\n else\n return str\n}\n\nconst escapePowershell = (str) => {\n if (str === \"-d \") {\n return str\n }\n if (/\\n/.test(str)) {\n return \"@\\\"\\n\" + str.replace(/\"/g, \"\\\\\\\"\").replace(/`/g, \"``\").replace(/\\$/, \"`$\") + \"\\n\\\"@\"\n }\n // eslint-disable-next-line no-useless-escape\n if (!/^[_\\/-]/g.test(str))\n return \"'\" + str\n .replace(/\"/g, \"\\\"\\\"\")\n .replace(/'/g, \"''\") + \"'\"\n else\n return str\n}\n\nfunction getStringBodyOfMap(request) {\n let curlifyToJoin = []\n for (let [k, v] of request.get(\"body\").entrySeq()) {\n let extractedKey = extractKey(k)\n if (v instanceof win.File) {\n curlifyToJoin.push(` \"${extractedKey}\": {\\n \"name\": \"${v.name}\"${v.type ? `,\\n \"type\": \"${v.type}\"` : \"\"}\\n }`)\n } else {\n curlifyToJoin.push(` \"${extractedKey}\": ${JSON.stringify(v, null, 2).replace(/(\\r\\n|\\r|\\n)/g, \"\\n \")}`)\n }\n }\n return `{\\n${curlifyToJoin.join(\",\\n\")}\\n}`\n}\n\nconst curlify = (request, escape, newLine, ext = \"\") => {\n let isMultipartFormDataRequest = false\n let curlified = \"\"\n const addWords = (...args) => curlified += \" \" + args.map(escape).join(\" \")\n const addWordsWithoutLeadingSpace = (...args) => curlified += args.map(escape).join(\" \")\n const addNewLine = () => curlified += ` ${newLine}`\n const addIndent = (level = 1) => curlified += \" \".repeat(level)\n let headers = request.get(\"headers\")\n curlified += \"curl\" + ext\n\n if (request.has(\"curlOptions\")) {\n addWords(...request.get(\"curlOptions\"))\n }\n\n addWords(\"-X\", request.get(\"method\"))\n\n addNewLine()\n addIndent()\n addWordsWithoutLeadingSpace(`${request.get(\"url\")}`)\n\n if (headers && headers.size) {\n for (let p of request.get(\"headers\").entries()) {\n addNewLine()\n addIndent()\n let [h, v] = p\n addWordsWithoutLeadingSpace(\"-H\", `${h}: ${v}`)\n isMultipartFormDataRequest = isMultipartFormDataRequest || /^content-type$/i.test(h) && /^multipart\\/form-data$/i.test(v)\n }\n }\n\n const body = request.get(\"body\")\n if (body) {\n if (isMultipartFormDataRequest && [\"POST\", \"PUT\", \"PATCH\"].includes(request.get(\"method\"))) {\n for (let [k, v] of body.entrySeq()) {\n let extractedKey = extractKey(k)\n addNewLine()\n addIndent()\n addWordsWithoutLeadingSpace(\"-F\")\n if (v instanceof win.File) {\n addWords(`${extractedKey}=@${v.name}${v.type ? `;type=${v.type}` : \"\"}`)\n } else {\n addWords(`${extractedKey}=${v}`)\n }\n }\n } else if(body instanceof win.File) {\n addNewLine()\n addIndent()\n addWordsWithoutLeadingSpace(`--data-binary '@${body.name}'`)\n } else {\n addNewLine()\n addIndent()\n addWordsWithoutLeadingSpace(\"-d \")\n let reqBody = body\n if (!Map.isMap(reqBody)) {\n if (typeof reqBody !== \"string\") {\n reqBody = JSON.stringify(reqBody)\n }\n addWordsWithoutLeadingSpace(reqBody)\n } else {\n addWordsWithoutLeadingSpace(getStringBodyOfMap(request))\n }\n }\n } else if (!body && request.get(\"method\") === \"POST\") {\n addNewLine()\n addIndent()\n addWordsWithoutLeadingSpace(\"-d ''\")\n }\n\n return curlified\n}\n\n// eslint-disable-next-line camelcase\nexport const requestSnippetGenerator_curl_powershell = (request) => {\n return curlify(request, escapePowershell, \"`\\n\", \".exe\")\n}\n\n// eslint-disable-next-line camelcase\nexport const requestSnippetGenerator_curl_bash = (request) => {\n return curlify(request, escapeShell, \"\\\\\\n\")\n}\n\n// eslint-disable-next-line camelcase\nexport const requestSnippetGenerator_curl_cmd = (request) => {\n return curlify(request, escapeCMD, \"^\\n\")\n}\n","import * as fn from \"./fn\"\nimport * as selectors from \"./selectors\"\nimport RequestSnippets from \"./request-snippets\"\nexport default () => {\n return {\n components: {\n RequestSnippets\n },\n fn,\n statePlugins: {\n requestSnippets: {\n selectors\n }\n }\n }\n}\n","import React, { useRef, useEffect, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport get from \"lodash/get\"\nimport isFunction from \"lodash/isFunction\"\nimport { CopyToClipboard } from \"react-copy-to-clipboard\"\nimport { SyntaxHighlighter, getStyle } from \"core/syntax-highlighting\"\n\nconst style = {\n cursor: \"pointer\",\n lineHeight: 1,\n display: \"inline-flex\",\n backgroundColor: \"rgb(250, 250, 250)\",\n paddingBottom: \"0\",\n paddingTop: \"0\",\n border: \"1px solid rgb(51, 51, 51)\",\n borderRadius: \"4px 4px 0 0\",\n boxShadow: \"none\",\n borderBottom: \"none\"\n}\n\nconst activeStyle = {\n cursor: \"pointer\",\n lineHeight: 1,\n display: \"inline-flex\",\n backgroundColor: \"rgb(51, 51, 51)\",\n boxShadow: \"none\",\n border: \"1px solid rgb(51, 51, 51)\",\n paddingBottom: \"0\",\n paddingTop: \"0\",\n borderRadius: \"4px 4px 0 0\",\n marginTop: \"-5px\",\n marginRight: \"-5px\",\n marginLeft: \"-5px\",\n zIndex: \"9999\",\n borderBottom: \"none\"\n}\n\nconst RequestSnippets = ({ request, requestSnippetsSelectors, getConfigs }) => {\n const config = isFunction(getConfigs) ? getConfigs() : null\n const canSyntaxHighlight = get(config, \"syntaxHighlight\") !== false && get(config, \"syntaxHighlight.activated\", true)\n const rootRef = useRef(null)\n\n const [activeLanguage, setActiveLanguage] = useState(requestSnippetsSelectors.getSnippetGenerators()?.keySeq().first())\n const [isExpanded, setIsExpanded] = useState(requestSnippetsSelectors?.getDefaultExpanded())\n useEffect(() => {\n const doIt = () => {\n\n }\n doIt()\n }, [])\n useEffect(() => {\n const childNodes = Array\n .from(rootRef.current.childNodes)\n .filter(node => !!node.nodeType && node.classList?.contains(\"curl-command\"))\n // eslint-disable-next-line no-use-before-define\n childNodes.forEach(node => node.addEventListener(\"mousewheel\", handlePreventYScrollingBeyondElement, { passive: false }))\n\n return () => {\n // eslint-disable-next-line no-use-before-define\n childNodes.forEach(node => node.removeEventListener(\"mousewheel\", handlePreventYScrollingBeyondElement))\n }\n }, [request])\n\n const snippetGenerators = requestSnippetsSelectors.getSnippetGenerators()\n const activeGenerator = snippetGenerators.get(activeLanguage)\n const snippet = activeGenerator.get(\"fn\")(request)\n\n const handleGenChange = (key) => {\n const needsChange = activeLanguage !== key\n if (needsChange) {\n setActiveLanguage(key)\n }\n }\n\n const handleSetIsExpanded = () => {\n setIsExpanded(!isExpanded)\n }\n\n const handleGetBtnStyle = (key) => {\n if (key === activeLanguage) {\n return activeStyle\n }\n return style\n }\n\n const handlePreventYScrollingBeyondElement = (e) => {\n const { target, deltaY } = e\n const { scrollHeight: contentHeight, offsetHeight: visibleHeight, scrollTop } = target\n const scrollOffset = visibleHeight + scrollTop\n const isElementScrollable = contentHeight > visibleHeight\n const isScrollingPastTop = scrollTop === 0 && deltaY < 0\n const isScrollingPastBottom = scrollOffset >= contentHeight && deltaY > 0\n\n if (isElementScrollable && (isScrollingPastTop || isScrollingPastBottom)) {\n e.preventDefault()\n }\n }\n\n const SnippetComponent = canSyntaxHighlight\n ? \n {snippet}\n \n :\n \n\n return (\n
    \n
    \n handleSetIsExpanded()}\n style={{ cursor: \"pointer\" }}\n >Snippets\n handleSetIsExpanded()}\n style={{ border: \"none\", background: \"none\" }}\n title={isExpanded ? \"Collapse operation\" : \"Expand operation\"}\n >\n \n \n \n \n
    \n {\n isExpanded &&
    \n
    \n {\n snippetGenerators.entrySeq().map(([key, gen]) => {\n return (
    handleGenChange(key)}>\n

    {gen.get(\"title\")}

    \n
    )\n })\n }\n
    \n
    \n \n
    \n
    \n {SnippetComponent}\n
    \n
    \n }\n
    \n ) \n}\n\nRequestSnippets.propTypes = {\n request: PropTypes.object.isRequired,\n requestSnippetsSelectors: PropTypes.object.isRequired,\n getConfigs: PropTypes.object.isRequired,\n requestSnippetsActions: PropTypes.object,\n}\n\nexport default RequestSnippets\n","import { createSelector } from \"reselect\"\nimport { Map } from \"immutable\"\n\nconst state = state => state || Map()\n\nexport const getGenerators = createSelector(\n state,\n state => {\n const languageKeys = state\n .get(\"languages\")\n const generators = state\n .get(\"generators\", Map())\n if(!languageKeys || languageKeys.isEmpty()) {\n return generators\n }\n return generators\n .filter((v, key) => languageKeys.includes(key))\n }\n)\n\nexport const getSnippetGenerators = (state) => ({ fn }) => {\n const getGenFn = (key) => fn[`requestSnippetGenerator_${key}`]\n return getGenerators(state)\n .map((gen, key) => {\n const genFn = getGenFn(key)\n if(typeof genFn !== \"function\") {\n return null\n }\n\n return gen.set(\"fn\", genFn)\n })\n .filter(v => v)\n}\n\nexport const getActiveLanguage = createSelector(\n state,\n state => state\n .get(\"activeLanguage\")\n)\n\nexport const getDefaultExpanded = createSelector(\n state,\n state => state\n .get(\"defaultExpanded\")\n)\n","import PropTypes from \"prop-types\"\nimport React, { Component } from \"react\"\n\nimport { componentDidCatch } from \"../fn\"\nimport Fallback from \"./fallback\"\n\nexport class ErrorBoundary extends Component {\n static getDerivedStateFromError(error) {\n return { hasError: true, error }\n }\n\n constructor(...args) {\n super(...args)\n this.state = { hasError: false, error: null }\n }\n\n componentDidCatch(error, errorInfo) {\n this.props.fn.componentDidCatch(error, errorInfo)\n }\n\n render() {\n const { getComponent, targetName, children } = this.props\n\n if (this.state.hasError) {\n const FallbackComponent = getComponent(\"Fallback\")\n return \n }\n\n return children\n }\n}\nErrorBoundary.propTypes = {\n targetName: PropTypes.string,\n getComponent: PropTypes.func,\n fn: PropTypes.object,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ])\n}\nErrorBoundary.defaultProps = {\n targetName: \"this component\",\n getComponent: () => Fallback,\n fn: {\n componentDidCatch,\n },\n children: null,\n}\n\nexport default ErrorBoundary\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst Fallback = ({ name }) => (\n
    \n 😱 Could not render { name === \"t\" ? \"this component\" : name }, see the console.\n
    \n)\nFallback.propTypes = {\n name: PropTypes.string.isRequired,\n}\n\nexport default Fallback\n","import React, { Component } from \"react\"\n\nexport const componentDidCatch = console.error\n\nconst isClassComponent = component => component.prototype && component.prototype.isReactComponent\n\nexport const withErrorBoundary = (getSystem) => (WrappedComponent) => {\n const { getComponent, fn } = getSystem()\n const ErrorBoundary = getComponent(\"ErrorBoundary\")\n const targetName = fn.getDisplayName(WrappedComponent)\n\n class WithErrorBoundary extends Component {\n render() {\n return (\n \n \n \n )\n }\n }\n WithErrorBoundary.displayName = `WithErrorBoundary(${targetName})`\n if (isClassComponent(WrappedComponent)) {\n /**\n * We need to handle case of class components defining a `mapStateToProps` public method.\n * Components with `mapStateToProps` public method cannot be wrapped.\n */\n WithErrorBoundary.prototype.mapStateToProps = WrappedComponent.prototype.mapStateToProps\n }\n\n return WithErrorBoundary\n}\n\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_fill_07ef3114__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_lodash_zipObject_c74f1c14__[\"default\"] });","import zipObject from \"lodash/zipObject\"\n\nimport ErrorBoundary from \"./components/error-boundary\"\nimport Fallback from \"./components/fallback\"\nimport { componentDidCatch, withErrorBoundary } from \"./fn\"\n\nconst safeRenderPlugin = ({componentList = [], fullOverride = false} = {}) => ({ getSystem }) => {\n const defaultComponentList = [\n \"App\",\n \"BaseLayout\",\n \"VersionPragmaFilter\",\n \"InfoContainer\",\n \"ServersContainer\",\n \"SchemesContainer\",\n \"AuthorizeBtnContainer\",\n \"FilterContainer\",\n \"Operations\",\n \"OperationContainer\",\n \"parameters\",\n \"responses\",\n \"OperationServers\",\n \"Models\",\n \"ModelWrapper\",\n ]\n const mergedComponentList = fullOverride ? componentList : [...defaultComponentList, ...componentList]\n const wrapFactory = (Original, { fn }) => fn.withErrorBoundary(Original)\n const wrapComponents = zipObject(mergedComponentList, Array(mergedComponentList.length).fill(wrapFactory))\n\n return {\n fn: {\n componentDidCatch,\n withErrorBoundary: withErrorBoundary(getSystem),\n },\n components: {\n ErrorBoundary,\n Fallback,\n },\n wrapComponents,\n }\n}\n\nexport default safeRenderPlugin\n","/**\n * @prettier\n */\nimport some from \"lodash/some\"\n\nconst shouldStringifyTypesConfig = [\n {\n when: /json/,\n shouldStringifyTypes: [\"string\"],\n },\n]\nconst defaultStringifyTypes = [\"object\"]\nconst makeGetJsonSampleSchema =\n (getSystem) => (schema, config, contentType, exampleOverride) => {\n const { fn } = getSystem()\n const res = fn.memoizedSampleFromSchema(schema, config, exampleOverride)\n const resType = typeof res\n\n const typesToStringify = shouldStringifyTypesConfig.reduce(\n (types, nextConfig) =>\n nextConfig.when.test(contentType)\n ? [...types, ...nextConfig.shouldStringifyTypes]\n : types,\n defaultStringifyTypes\n )\n\n return some(typesToStringify, (x) => x === resType)\n ? JSON.stringify(res, null, 2)\n : res\n }\n\nexport default makeGetJsonSampleSchema\n","/**\n * @prettier\n */\nconst makeGetSampleSchema =\n (getSystem) =>\n (schema, contentType = \"\", config = {}, exampleOverride = undefined) => {\n const { fn } = getSystem()\n\n if (typeof schema?.toJS === \"function\") {\n schema = schema.toJS()\n }\n if (typeof exampleOverride?.toJS === \"function\") {\n exampleOverride = exampleOverride.toJS()\n }\n\n if (/xml/.test(contentType)) {\n return fn.getXmlSampleSchema(schema, config, exampleOverride)\n }\n if (/(yaml|yml)/.test(contentType)) {\n return fn.getYamlSampleSchema(\n schema,\n config,\n contentType,\n exampleOverride\n )\n }\n return fn.getJsonSampleSchema(schema, config, contentType, exampleOverride)\n }\n\nexport default makeGetSampleSchema\n","/**\n * @prettier\n */\nconst makeGetXmlSampleSchema =\n (getSystem) => (schema, config, exampleOverride) => {\n const { fn } = getSystem()\n\n if (schema && !schema.xml) {\n schema.xml = {}\n }\n if (schema && !schema.xml.name) {\n if (\n !schema.$$ref &&\n (schema.type ||\n schema.items ||\n schema.properties ||\n schema.additionalProperties)\n ) {\n // eslint-disable-next-line quotes\n return '\\n'\n }\n if (schema.$$ref) {\n let match = schema.$$ref.match(/\\S*\\/(\\S+)$/)\n schema.xml.name = match[1]\n }\n }\n\n return fn.memoizedCreateXMLExample(schema, config, exampleOverride)\n }\n\nexport default makeGetXmlSampleSchema\n","/**\n * @prettier\n */\nimport YAML, { JSON_SCHEMA } from \"js-yaml\"\n\nconst makeGetYamlSampleSchema =\n (getSystem) => (schema, config, contentType, exampleOverride) => {\n const { fn } = getSystem()\n const jsonExample = fn.getJsonSampleSchema(\n schema,\n config,\n contentType,\n exampleOverride\n )\n let yamlString\n try {\n yamlString = YAML.dump(\n YAML.load(jsonExample),\n {\n lineWidth: -1, // don't generate line folds\n },\n { schema: JSON_SCHEMA }\n )\n if (yamlString[yamlString.length - 1] === \"\\n\") {\n yamlString = yamlString.slice(0, yamlString.length - 1)\n }\n } catch (e) {\n console.error(e)\n return \"error: could not generate yaml example\"\n }\n return yamlString.replace(/\\t/g, \" \")\n }\n\nexport default makeGetYamlSampleSchema\n","import XML from \"xml\"\nimport RandExp from \"randexp\"\nimport isEmpty from \"lodash/isEmpty\"\nimport { objectify, isFunc, normalizeArray, deeplyStripKey } from \"core/utils\"\n\nimport memoizeN from \"../../../../helpers/memoizeN\"\n\nconst generateStringFromRegex = (pattern) => {\n try {\n const randexp = new RandExp(pattern)\n return randexp.gen()\n } catch (e) {\n // Invalid regex should not cause a crash (regex syntax varies across languages)\n return \"string\"\n }\n}\n\nconst primitives = {\n \"string\": (schema) => schema.pattern ? generateStringFromRegex(schema.pattern) : \"string\",\n \"string_email\": () => \"user@example.com\",\n \"string_date-time\": () => new Date().toISOString(),\n \"string_date\": () => new Date().toISOString().substring(0, 10),\n \"string_uuid\": () => \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n \"string_hostname\": () => \"example.com\",\n \"string_ipv4\": () => \"198.51.100.42\",\n \"string_ipv6\": () => \"2001:0db8:5b96:0000:0000:426f:8e17:642a\",\n \"number\": () => 0,\n \"number_float\": () => 0.0,\n \"integer\": () => 0,\n \"boolean\": (schema) => typeof schema.default === \"boolean\" ? schema.default : true\n}\n\nconst primitive = (schema) => {\n schema = objectify(schema)\n let { type, format } = schema\n\n let fn = primitives[`${type}_${format}`] || primitives[type]\n\n if(isFunc(fn))\n return fn(schema)\n\n return \"Unknown Type: \" + schema.type\n}\n\n// do a couple of quick sanity tests to ensure the value\n// looks like a $$ref that swagger-client generates.\nconst sanitizeRef = (value) => deeplyStripKey(value, \"$$ref\", (val) =>\n typeof val === \"string\" && val.indexOf(\"#\") > -1)\n\nconst objectContracts = [\"maxProperties\", \"minProperties\"]\nconst arrayContracts = [\"minItems\", \"maxItems\"]\nconst numberContracts = [\n \"minimum\",\n \"maximum\",\n \"exclusiveMinimum\",\n \"exclusiveMaximum\"\n]\nconst stringContracts = [\"minLength\", \"maxLength\"]\n\nconst liftSampleHelper = (oldSchema, target, config = {}) => {\n const setIfNotDefinedInTarget = (key) => {\n if(target[key] === undefined && oldSchema[key] !== undefined) {\n target[key] = oldSchema[key]\n }\n }\n\n [\n \"example\",\n \"default\",\n \"enum\",\n \"xml\",\n \"type\",\n ...objectContracts,\n ...arrayContracts,\n ...numberContracts,\n ...stringContracts,\n ].forEach(key => setIfNotDefinedInTarget(key))\n\n if(oldSchema.required !== undefined && Array.isArray(oldSchema.required)) {\n if(target.required === undefined || !target.required.length) {\n target.required = []\n }\n oldSchema.required.forEach(key => {\n if(target.required.includes(key)) {\n return\n }\n target.required.push(key)\n })\n }\n if(oldSchema.properties) {\n if(!target.properties) {\n target.properties = {}\n }\n let props = objectify(oldSchema.properties)\n for (let propName in props) {\n if (!Object.prototype.hasOwnProperty.call(props, propName)) {\n continue\n }\n if ( props[propName] && props[propName].deprecated ) {\n continue\n }\n if ( props[propName] && props[propName].readOnly && !config.includeReadOnly ) {\n continue\n }\n if ( props[propName] && props[propName].writeOnly && !config.includeWriteOnly ) {\n continue\n }\n if(!target.properties[propName]) {\n target.properties[propName] = props[propName]\n if(!oldSchema.required && Array.isArray(oldSchema.required) && oldSchema.required.indexOf(propName) !== -1) {\n if(!target.required) {\n target.required = [propName]\n } else {\n target.required.push(propName)\n }\n }\n }\n }\n }\n if(oldSchema.items) {\n if(!target.items) {\n target.items = {}\n }\n target.items = liftSampleHelper(oldSchema.items, target.items, config)\n }\n\n return target\n}\n\nexport const sampleFromSchemaGeneric = (schema, config={}, exampleOverride = undefined, respectXML = false) => {\n if(schema && isFunc(schema.toJS))\n schema = schema.toJS()\n let usePlainValue = exampleOverride !== undefined || schema && schema.example !== undefined || schema && schema.default !== undefined\n // first check if there is the need of combining this schema with others required by allOf\n const hasOneOf = !usePlainValue && schema && schema.oneOf && schema.oneOf.length > 0\n const hasAnyOf = !usePlainValue && schema && schema.anyOf && schema.anyOf.length > 0\n if(!usePlainValue && (hasOneOf || hasAnyOf)) {\n const schemaToAdd = objectify(hasOneOf\n ? schema.oneOf[0]\n : schema.anyOf[0]\n )\n liftSampleHelper(schemaToAdd, schema, config)\n if(!schema.xml && schemaToAdd.xml) {\n schema.xml = schemaToAdd.xml\n }\n if(schema.example !== undefined && schemaToAdd.example !== undefined) {\n usePlainValue = true\n } else if(schemaToAdd.properties) {\n if(!schema.properties) {\n schema.properties = {}\n }\n let props = objectify(schemaToAdd.properties)\n for (let propName in props) {\n if (!Object.prototype.hasOwnProperty.call(props, propName)) {\n continue\n }\n if ( props[propName] && props[propName].deprecated ) {\n continue\n }\n if ( props[propName] && props[propName].readOnly && !config.includeReadOnly ) {\n continue\n }\n if ( props[propName] && props[propName].writeOnly && !config.includeWriteOnly ) {\n continue\n }\n if(!schema.properties[propName]) {\n schema.properties[propName] = props[propName]\n if(!schemaToAdd.required && Array.isArray(schemaToAdd.required) && schemaToAdd.required.indexOf(propName) !== -1) {\n if(!schema.required) {\n schema.required = [propName]\n } else {\n schema.required.push(propName)\n }\n }\n }\n }\n }\n }\n const _attr = {}\n let { xml, type, example, properties, additionalProperties, items } = schema || {}\n let { includeReadOnly, includeWriteOnly } = config\n xml = xml || {}\n let { name, prefix, namespace } = xml\n let displayName\n let res = {}\n\n // set xml naming and attributes\n if(respectXML) {\n name = name || \"notagname\"\n // add prefix to name if exists\n displayName = (prefix ? prefix + \":\" : \"\") + name\n if ( namespace ) {\n //add prefix to namespace if exists\n let namespacePrefix = prefix ? ( \"xmlns:\" + prefix ) : \"xmlns\"\n _attr[namespacePrefix] = namespace\n }\n }\n\n // init xml default response sample obj\n if(respectXML) {\n res[displayName] = []\n }\n\n const schemaHasAny = (keys) => keys.some(key => Object.prototype.hasOwnProperty.call(schema, key))\n // try recover missing type\n if(schema && !type) {\n if(properties || additionalProperties || schemaHasAny(objectContracts)) {\n type = \"object\"\n } else if(items || schemaHasAny(arrayContracts)) {\n type = \"array\"\n } else if(schemaHasAny(numberContracts)) {\n type = \"number\"\n schema.type = \"number\"\n } else if(!usePlainValue && !schema.enum){\n // implicit cover schemaHasAny(stringContracts) or A schema without a type matches any data type is:\n // components:\n // schemas:\n // AnyValue:\n // anyOf:\n // - type: string\n // - type: number\n // - type: integer\n // - type: boolean\n // - type: array\n // items: {}\n // - type: object\n //\n // which would resolve to type: string\n type = \"string\"\n schema.type = \"string\"\n }\n }\n\n const handleMinMaxItems = (sampleArray) => {\n if (schema?.maxItems !== null && schema?.maxItems !== undefined) {\n sampleArray = sampleArray.slice(0, schema?.maxItems)\n }\n if (schema?.minItems !== null && schema?.minItems !== undefined) {\n let i = 0\n while (sampleArray.length < schema?.minItems) {\n sampleArray.push(sampleArray[i++ % sampleArray.length])\n }\n }\n return sampleArray\n }\n\n // add to result helper init for xml or json\n const props = objectify(properties)\n let addPropertyToResult\n let propertyAddedCounter = 0\n\n const hasExceededMaxProperties = () => schema\n && schema.maxProperties !== null && schema.maxProperties !== undefined\n && propertyAddedCounter >= schema.maxProperties\n\n const requiredPropertiesToAdd = () => {\n if(!schema || !schema.required) {\n return 0\n }\n let addedCount = 0\n if(respectXML) {\n schema.required.forEach(key => addedCount +=\n res[key] === undefined\n ? 0\n : 1\n )\n } else {\n schema.required.forEach(key => addedCount +=\n res[displayName]?.find(x => x[key] !== undefined) === undefined\n ? 0\n : 1\n )\n }\n return schema.required.length - addedCount\n }\n\n const isOptionalProperty = (propName) => {\n if(!schema || !schema.required || !schema.required.length) {\n return true\n }\n return !schema.required.includes(propName)\n }\n\n const canAddProperty = (propName) => {\n if(!schema || schema.maxProperties === null || schema.maxProperties === undefined) {\n return true\n }\n if(hasExceededMaxProperties()) {\n return false\n }\n if(!isOptionalProperty(propName)) {\n return true\n }\n return (schema.maxProperties - propertyAddedCounter - requiredPropertiesToAdd()) > 0\n }\n\n if(respectXML) {\n addPropertyToResult = (propName, overrideE = undefined) => {\n if(schema && props[propName]) {\n // case it is an xml attribute\n props[propName].xml = props[propName].xml || {}\n\n if (props[propName].xml.attribute) {\n const enumAttrVal = Array.isArray(props[propName].enum)\n ? props[propName].enum[0]\n : undefined\n const attrExample = props[propName].example\n const attrDefault = props[propName].default\n\n if(attrExample !== undefined) {\n _attr[props[propName].xml.name || propName] = attrExample\n } else if(attrDefault !== undefined) {\n _attr[props[propName].xml.name || propName] = attrDefault\n } else if(enumAttrVal !== undefined) {\n _attr[props[propName].xml.name || propName] = enumAttrVal\n } else {\n _attr[props[propName].xml.name || propName] = primitive(props[propName])\n }\n\n return\n }\n props[propName].xml.name = props[propName].xml.name || propName\n } else if(!props[propName] && additionalProperties !== false) {\n // case only additionalProperty that is not defined in schema\n props[propName] = {\n xml: {\n name: propName\n }\n }\n }\n\n let t = sampleFromSchemaGeneric(schema && props[propName] || undefined, config, overrideE, respectXML)\n if(!canAddProperty(propName)) {\n return\n }\n\n propertyAddedCounter++\n if (Array.isArray(t)) {\n res[displayName] = res[displayName].concat(t)\n } else {\n res[displayName].push(t)\n }\n }\n } else {\n addPropertyToResult = (propName, overrideE) => {\n if(!canAddProperty(propName)) {\n return\n }\n if(Object.prototype.hasOwnProperty.call(schema, \"discriminator\") &&\n schema.discriminator &&\n Object.prototype.hasOwnProperty.call(schema.discriminator, \"mapping\") &&\n schema.discriminator.mapping &&\n Object.prototype.hasOwnProperty.call(schema, \"$$ref\") &&\n schema.$$ref &&\n schema.discriminator.propertyName === propName) {\n for (let pair in schema.discriminator.mapping){\n if (schema.$$ref.search(schema.discriminator.mapping[pair]) !== -1) {\n res[propName] = pair\n break\n }\n }\n } else {\n res[propName] = sampleFromSchemaGeneric(props[propName], config, overrideE, respectXML)\n }\n propertyAddedCounter++\n }\n }\n\n // check for plain value and if found use it to generate sample from it\n if(usePlainValue) {\n let sample\n if(exampleOverride !== undefined) {\n sample = sanitizeRef(exampleOverride)\n } else if(example !== undefined) {\n sample = sanitizeRef(example)\n } else {\n sample = sanitizeRef(schema.default)\n }\n\n // if json just return\n if(!respectXML) {\n // spacial case yaml parser can not know about\n if(typeof sample === \"number\" && type === \"string\") {\n return `${sample}`\n }\n // return if sample does not need any parsing\n if(typeof sample !== \"string\" || type === \"string\") {\n return sample\n }\n // check if sample is parsable or just a plain string\n try {\n return JSON.parse(sample)\n } catch(e) {\n // sample is just plain string return it\n return sample\n }\n }\n\n // recover missing type\n if(!schema) {\n type = Array.isArray(sample) ? \"array\" : typeof sample\n }\n\n // generate xml sample recursively for array case\n if(type === \"array\") {\n if (!Array.isArray(sample)) {\n if(typeof sample === \"string\") {\n return sample\n }\n sample = [sample]\n }\n const itemSchema = schema\n ? schema.items\n : undefined\n if(itemSchema) {\n itemSchema.xml = itemSchema.xml || xml || {}\n itemSchema.xml.name = itemSchema.xml.name || xml.name\n }\n let itemSamples = sample\n .map(s => sampleFromSchemaGeneric(itemSchema, config, s, respectXML))\n itemSamples = handleMinMaxItems(itemSamples)\n if(xml.wrapped) {\n res[displayName] = itemSamples\n if (!isEmpty(_attr)) {\n res[displayName].push({_attr: _attr})\n }\n }\n else {\n res = itemSamples\n }\n return res\n }\n\n // generate xml sample recursively for object case\n if(type === \"object\") {\n // case literal example\n if(typeof sample === \"string\") {\n return sample\n }\n for (let propName in sample) {\n if (!Object.prototype.hasOwnProperty.call(sample, propName)) {\n continue\n }\n if (schema && props[propName] && props[propName].readOnly && !includeReadOnly) {\n continue\n }\n if (schema && props[propName] && props[propName].writeOnly && !includeWriteOnly) {\n continue\n }\n if (schema && props[propName] && props[propName].xml && props[propName].xml.attribute) {\n _attr[props[propName].xml.name || propName] = sample[propName]\n continue\n }\n addPropertyToResult(propName, sample[propName])\n }\n if (!isEmpty(_attr)) {\n res[displayName].push({_attr: _attr})\n }\n\n return res\n }\n\n res[displayName] = !isEmpty(_attr) ? [{_attr: _attr}, sample] : sample\n return res\n }\n\n // use schema to generate sample\n\n if(type === \"object\") {\n for (let propName in props) {\n if (!Object.prototype.hasOwnProperty.call(props, propName)) {\n continue\n }\n if ( props[propName] && props[propName].deprecated ) {\n continue\n }\n if ( props[propName] && props[propName].readOnly && !includeReadOnly ) {\n continue\n }\n if ( props[propName] && props[propName].writeOnly && !includeWriteOnly ) {\n continue\n }\n addPropertyToResult(propName)\n }\n if (respectXML && _attr) {\n res[displayName].push({_attr: _attr})\n }\n\n if(hasExceededMaxProperties()) {\n return res\n }\n\n if ( additionalProperties === true ) {\n if(respectXML) {\n res[displayName].push({additionalProp: \"Anything can be here\"})\n } else {\n res.additionalProp1 = {}\n }\n propertyAddedCounter++\n } else if ( additionalProperties ) {\n const additionalProps = objectify(additionalProperties)\n const additionalPropSample = sampleFromSchemaGeneric(additionalProps, config, undefined, respectXML)\n\n if(respectXML && additionalProps.xml && additionalProps.xml.name && additionalProps.xml.name !== \"notagname\")\n {\n res[displayName].push(additionalPropSample)\n } else {\n const toGenerateCount = schema.minProperties !== null && schema.minProperties !== undefined && propertyAddedCounter < schema.minProperties\n ? schema.minProperties - propertyAddedCounter\n : 3\n for (let i = 1; i <= toGenerateCount; i++) {\n if(hasExceededMaxProperties()) {\n return res\n }\n if(respectXML) {\n const temp = {}\n temp[\"additionalProp\" + i] = additionalPropSample[\"notagname\"]\n res[displayName].push(temp)\n } else {\n res[\"additionalProp\" + i] = additionalPropSample\n }\n propertyAddedCounter++\n }\n }\n }\n return res\n }\n\n if(type === \"array\") {\n if (!items) {\n return\n }\n\n let sampleArray\n if(respectXML) {\n items.xml = items.xml || schema?.xml || {}\n items.xml.name = items.xml.name || xml.name\n }\n\n if(Array.isArray(items.anyOf)) {\n sampleArray = items.anyOf.map(i => sampleFromSchemaGeneric(liftSampleHelper(items, i, config), config, undefined, respectXML))\n } else if(Array.isArray(items.oneOf)) {\n sampleArray = items.oneOf.map(i => sampleFromSchemaGeneric(liftSampleHelper(items, i, config), config, undefined, respectXML))\n } else if(!respectXML || respectXML && xml.wrapped) {\n sampleArray = [sampleFromSchemaGeneric(items, config, undefined, respectXML)]\n } else {\n return sampleFromSchemaGeneric(items, config, undefined, respectXML)\n }\n sampleArray = handleMinMaxItems(sampleArray)\n if(respectXML && xml.wrapped) {\n res[displayName] = sampleArray\n if (!isEmpty(_attr)) {\n res[displayName].push({_attr: _attr})\n }\n return res\n }\n return sampleArray\n }\n\n let value\n if (schema && Array.isArray(schema.enum)) {\n //display enum first value\n value = normalizeArray(schema.enum)[0]\n } else if(schema) {\n // display schema default\n value = primitive(schema)\n if(typeof value === \"number\") {\n let min = schema.minimum\n if(min !== undefined && min !== null) {\n if(schema.exclusiveMinimum) {\n min++\n }\n value = min\n }\n let max = schema.maximum\n if(max !== undefined && max !== null) {\n if(schema.exclusiveMaximum) {\n max--\n }\n value = max\n }\n }\n if(typeof value === \"string\") {\n if (schema.maxLength !== null && schema.maxLength !== undefined) {\n value = value.slice(0, schema.maxLength)\n }\n if (schema.minLength !== null && schema.minLength !== undefined) {\n let i = 0\n while (value.length < schema.minLength) {\n value += value[i++ % value.length]\n }\n }\n }\n } else {\n return\n }\n if (type === \"file\") {\n return\n }\n\n if(respectXML) {\n res[displayName] = !isEmpty(_attr) ? [{_attr: _attr}, value] : value\n return res\n }\n\n return value\n}\n\nexport const inferSchema = (thing) => {\n if(thing.schema)\n thing = thing.schema\n\n if(thing.properties) {\n thing.type = \"object\"\n }\n\n return thing // Hopefully this will have something schema like in it... `type` for example\n}\n\nexport const createXMLExample = (schema, config, o) => {\n const json = sampleFromSchemaGeneric(schema, config, o, true)\n if (!json) { return }\n if(typeof json === \"string\") {\n return json\n }\n return XML(json, { declaration: true, indent: \"\\t\" })\n}\n\nexport const sampleFromSchema = (schema, config, o) =>\n sampleFromSchemaGeneric(schema, config, o, false)\n\nconst resolver = (arg1, arg2, arg3) => [arg1, JSON.stringify(arg2), JSON.stringify(arg3)]\n\nexport const memoizedCreateXMLExample = memoizeN(createXMLExample, resolver)\n\nexport const memoizedSampleFromSchema = memoizeN(sampleFromSchema, resolver)\n","/**\n * @prettier\n */\nimport {\n sampleFromSchema,\n inferSchema,\n sampleFromSchemaGeneric,\n createXMLExample,\n memoizedCreateXMLExample,\n memoizedSampleFromSchema,\n} from \"./fn/index\"\nimport makeGetJsonSampleSchema from \"./fn/get-json-sample-schema\"\nimport makeGetYamlSampleSchema from \"./fn/get-yaml-sample-schema\"\nimport makeGetXmlSampleSchema from \"./fn/get-xml-sample-schema\"\nimport makeGetSampleSchema from \"./fn/get-sample-schema\"\n\nconst SamplesPlugin = ({ getSystem }) => ({\n fn: {\n inferSchema,\n sampleFromSchema,\n sampleFromSchemaGeneric,\n createXMLExample,\n memoizedSampleFromSchema,\n memoizedCreateXMLExample,\n getJsonSampleSchema: makeGetJsonSampleSchema(getSystem),\n getYamlSampleSchema: makeGetYamlSampleSchema(getSystem),\n getXmlSampleSchema: makeGetXmlSampleSchema(getSystem),\n getSampleSchema: makeGetSampleSchema(getSystem),\n },\n})\n\nexport default SamplesPlugin\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_promise_047dc8e8__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_date_now_1bf78713__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_lodash_isString_e6fa8a5b__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_lodash_debounce_3540babe__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_lodash_set_b4b15ee5__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_lodash_fp_assocPath_f9d64e33__[\"default\"] });","import YAML, { JSON_SCHEMA } from \"js-yaml\"\nimport { Map } from \"immutable\"\nimport parseUrl from \"url-parse\"\nimport { serializeError } from \"serialize-error\"\nimport isString from \"lodash/isString\"\nimport debounce from \"lodash/debounce\"\nimport set from \"lodash/set\"\nimport assocPath from \"lodash/fp/assocPath\"\n\nimport { paramToValue, isEmptyValue } from \"core/utils\"\n\n// Actions conform to FSA (flux-standard-actions)\n// {type: string,payload: Any|Error, meta: obj, error: bool}\n\nexport const UPDATE_SPEC = \"spec_update_spec\"\nexport const UPDATE_URL = \"spec_update_url\"\nexport const UPDATE_JSON = \"spec_update_json\"\nexport const UPDATE_PARAM = \"spec_update_param\"\nexport const UPDATE_EMPTY_PARAM_INCLUSION = \"spec_update_empty_param_inclusion\"\nexport const VALIDATE_PARAMS = \"spec_validate_param\"\nexport const SET_RESPONSE = \"spec_set_response\"\nexport const SET_REQUEST = \"spec_set_request\"\nexport const SET_MUTATED_REQUEST = \"spec_set_mutated_request\"\nexport const LOG_REQUEST = \"spec_log_request\"\nexport const CLEAR_RESPONSE = \"spec_clear_response\"\nexport const CLEAR_REQUEST = \"spec_clear_request\"\nexport const CLEAR_VALIDATE_PARAMS = \"spec_clear_validate_param\"\nexport const UPDATE_OPERATION_META_VALUE = \"spec_update_operation_meta_value\"\nexport const UPDATE_RESOLVED = \"spec_update_resolved\"\nexport const UPDATE_RESOLVED_SUBTREE = \"spec_update_resolved_subtree\"\nexport const SET_SCHEME = \"set_scheme\"\n\nconst toStr = (str) => isString(str) ? str : \"\"\n\nexport function updateSpec(spec) {\n const cleanSpec = (toStr(spec)).replace(/\\t/g, \" \")\n if(typeof spec === \"string\") {\n return {\n type: UPDATE_SPEC,\n payload: cleanSpec\n }\n }\n}\n\nexport function updateResolved(spec) {\n return {\n type: UPDATE_RESOLVED,\n payload: spec\n }\n}\n\nexport function updateUrl(url) {\n return {type: UPDATE_URL, payload: url}\n}\n\nexport function updateJsonSpec(json) {\n return {type: UPDATE_JSON, payload: json}\n}\n\nexport const parseToJson = (str) => ({specActions, specSelectors, errActions}) => {\n let { specStr } = specSelectors\n\n let json = null\n try {\n str = str || specStr()\n errActions.clear({ source: \"parser\" })\n json = YAML.load(str, { schema: JSON_SCHEMA })\n } catch(e) {\n // TODO: push error to state\n console.error(e)\n return errActions.newSpecErr({\n source: \"parser\",\n level: \"error\",\n message: e.reason,\n line: e.mark && e.mark.line ? e.mark.line + 1 : undefined\n })\n }\n if(json && typeof json === \"object\") {\n return specActions.updateJsonSpec(json)\n }\n return {}\n}\n\nlet hasWarnedAboutResolveSpecDeprecation = false\n\nexport const resolveSpec = (json, url) => ({specActions, specSelectors, errActions, fn: { fetch, resolve, AST = {} }, getConfigs}) => {\n if(!hasWarnedAboutResolveSpecDeprecation) {\n console.warn(`specActions.resolveSpec is deprecated since v3.10.0 and will be removed in v4.0.0; use requestResolvedSubtree instead!`)\n hasWarnedAboutResolveSpecDeprecation = true\n }\n\n const {\n modelPropertyMacro,\n parameterMacro,\n requestInterceptor,\n responseInterceptor\n } = getConfigs()\n\n if(typeof(json) === \"undefined\") {\n json = specSelectors.specJson()\n }\n if(typeof(url) === \"undefined\") {\n url = specSelectors.url()\n }\n\n let getLineNumberForPath = AST.getLineNumberForPath ? AST.getLineNumberForPath : () => undefined\n\n let specStr = specSelectors.specStr()\n\n return resolve({\n fetch,\n spec: json,\n baseDoc: url,\n modelPropertyMacro,\n parameterMacro,\n requestInterceptor,\n responseInterceptor\n }).then( ({spec, errors}) => {\n errActions.clear({\n type: \"thrown\"\n })\n if(Array.isArray(errors) && errors.length > 0) {\n let preparedErrors = errors\n .map(err => {\n console.error(err)\n err.line = err.fullPath ? getLineNumberForPath(specStr, err.fullPath) : null\n err.path = err.fullPath ? err.fullPath.join(\".\") : null\n err.level = \"error\"\n err.type = \"thrown\"\n err.source = \"resolver\"\n Object.defineProperty(err, \"message\", { enumerable: true, value: err.message })\n return err\n })\n errActions.newThrownErrBatch(preparedErrors)\n }\n\n return specActions.updateResolved(spec)\n })\n}\n\nlet requestBatch = []\n\nconst debResolveSubtrees = debounce(async () => {\n const system = requestBatch.system // Just a reference to the \"latest\" system\n\n if(!system) {\n console.error(\"debResolveSubtrees: don't have a system to operate on, aborting.\")\n return\n }\n const {\n errActions,\n errSelectors,\n fn: {\n resolveSubtree,\n fetch,\n AST = {}\n },\n specSelectors,\n specActions,\n } = system\n\n if(!resolveSubtree) {\n console.error(\"Error: Swagger-Client did not provide a `resolveSubtree` method, doing nothing.\")\n return\n }\n\n let getLineNumberForPath = AST.getLineNumberForPath ? AST.getLineNumberForPath : () => undefined\n\n const specStr = specSelectors.specStr()\n\n const {\n modelPropertyMacro,\n parameterMacro,\n requestInterceptor,\n responseInterceptor\n } = system.getConfigs()\n\n try {\n var batchResult = await requestBatch.reduce(async (prev, path) => {\n let { resultMap, specWithCurrentSubtrees } = await prev\n const { errors, spec } = await resolveSubtree(specWithCurrentSubtrees, path, {\n baseDoc: specSelectors.url(),\n modelPropertyMacro,\n parameterMacro,\n requestInterceptor,\n responseInterceptor\n })\n\n if(errSelectors.allErrors().size) {\n errActions.clearBy(err => {\n // keep if...\n return err.get(\"type\") !== \"thrown\" // it's not a thrown error\n || err.get(\"source\") !== \"resolver\" // it's not a resolver error\n || !err.get(\"fullPath\").every((key, i) => key === path[i] || path[i] === undefined) // it's not within the path we're resolving\n })\n }\n\n if(Array.isArray(errors) && errors.length > 0) {\n let preparedErrors = errors\n .map(err => {\n err.line = err.fullPath ? getLineNumberForPath(specStr, err.fullPath) : null\n err.path = err.fullPath ? err.fullPath.join(\".\") : null\n err.level = \"error\"\n err.type = \"thrown\"\n err.source = \"resolver\"\n Object.defineProperty(err, \"message\", { enumerable: true, value: err.message })\n return err\n })\n errActions.newThrownErrBatch(preparedErrors)\n }\n\n if (spec && specSelectors.isOAS3() && path[0] === \"components\" && path[1] === \"securitySchemes\") {\n // Resolve OIDC URLs if present\n await Promise.all(Object.values(spec)\n .filter((scheme) => scheme.type === \"openIdConnect\")\n .map(async (oidcScheme) => {\n const req = {\n url: oidcScheme.openIdConnectUrl,\n requestInterceptor: requestInterceptor,\n responseInterceptor: responseInterceptor\n }\n try {\n const res = await fetch(req)\n if (res instanceof Error || res.status >= 400) {\n console.error(res.statusText + \" \" + req.url)\n } else {\n oidcScheme.openIdConnectData = JSON.parse(res.text)\n }\n } catch (e) {\n console.error(e)\n }\n }))\n }\n set(resultMap, path, spec)\n specWithCurrentSubtrees = assocPath(path, spec, specWithCurrentSubtrees)\n\n return {\n resultMap,\n specWithCurrentSubtrees\n }\n }, Promise.resolve({\n resultMap: (specSelectors.specResolvedSubtree([]) || Map()).toJS(),\n specWithCurrentSubtrees: specSelectors.specJS()\n }))\n\n delete requestBatch.system\n requestBatch = [] // Clear stack\n } catch(e) {\n console.error(e)\n }\n\n specActions.updateResolvedSubtree([], batchResult.resultMap)\n}, 35)\n\nexport const requestResolvedSubtree = path => system => {\n // poor-man's array comparison\n // if this ever inadequate, this should be rewritten to use Im.List\n const isPathAlreadyBatched = requestBatch\n .map(arr => arr.join(\"@@\"))\n .indexOf(path.join(\"@@\")) > -1\n\n if(isPathAlreadyBatched) {\n return\n }\n\n requestBatch.push(path)\n requestBatch.system = system\n debResolveSubtrees()\n}\n\nexport function changeParam( path, paramName, paramIn, value, isXml ){\n return {\n type: UPDATE_PARAM,\n payload:{ path, value, paramName, paramIn, isXml }\n }\n}\n\nexport function changeParamByIdentity( pathMethod, param, value, isXml ){\n return {\n type: UPDATE_PARAM,\n payload:{ path: pathMethod, param, value, isXml }\n }\n}\n\nexport const updateResolvedSubtree = (path, value) => {\n return {\n type: UPDATE_RESOLVED_SUBTREE,\n payload: { path, value }\n }\n}\n\nexport const invalidateResolvedSubtreeCache = () => {\n return {\n type: UPDATE_RESOLVED_SUBTREE,\n payload: {\n path: [],\n value: Map()\n }\n }\n}\n\nexport const validateParams = ( payload, isOAS3 ) =>{\n return {\n type: VALIDATE_PARAMS,\n payload:{\n pathMethod: payload,\n isOAS3\n }\n }\n}\n\nexport const updateEmptyParamInclusion = ( pathMethod, paramName, paramIn, includeEmptyValue ) =>{\n return {\n type: UPDATE_EMPTY_PARAM_INCLUSION,\n payload:{\n pathMethod,\n paramName,\n paramIn,\n includeEmptyValue\n }\n }\n}\n\nexport function clearValidateParams( payload ){\n return {\n type: CLEAR_VALIDATE_PARAMS,\n payload:{ pathMethod: payload }\n }\n}\n\nexport function changeConsumesValue(path, value) {\n return {\n type: UPDATE_OPERATION_META_VALUE,\n payload:{ path, value, key: \"consumes_value\" }\n }\n}\n\nexport function changeProducesValue(path, value) {\n return {\n type: UPDATE_OPERATION_META_VALUE,\n payload:{ path, value, key: \"produces_value\" }\n }\n}\n\nexport const setResponse = ( path, method, res ) => {\n return {\n payload: { path, method, res },\n type: SET_RESPONSE\n }\n}\n\nexport const setRequest = ( path, method, req ) => {\n return {\n payload: { path, method, req },\n type: SET_REQUEST\n }\n}\n\nexport const setMutatedRequest = ( path, method, req ) => {\n return {\n payload: { path, method, req },\n type: SET_MUTATED_REQUEST\n }\n}\n\n// This is for debugging, remove this comment if you depend on this action\nexport const logRequest = (req) => {\n return {\n payload: req,\n type: LOG_REQUEST\n }\n}\n\n// Actually fire the request via fn.execute\n// (For debugging) and ease of testing\nexport const executeRequest = (req) =>\n ({fn, specActions, specSelectors, getConfigs, oas3Selectors}) => {\n let { pathName, method, operation } = req\n let { requestInterceptor, responseInterceptor } = getConfigs()\n\n\n let op = operation.toJS()\n\n // ensure that explicitly-included params are in the request\n\n if (operation && operation.get(\"parameters\")) {\n operation.get(\"parameters\")\n .filter(param => param && param.get(\"allowEmptyValue\") === true)\n .forEach(param => {\n if (specSelectors.parameterInclusionSettingFor([pathName, method], param.get(\"name\"), param.get(\"in\"))) {\n req.parameters = req.parameters || {}\n const paramValue = paramToValue(param, req.parameters)\n\n // if the value is falsy or an empty Immutable iterable...\n if(!paramValue || (paramValue && paramValue.size === 0)) {\n // set it to empty string, so Swagger Client will treat it as\n // present but empty.\n req.parameters[param.get(\"name\")] = \"\"\n }\n }\n })\n }\n\n // if url is relative, parseUrl makes it absolute by inferring from `window.location`\n req.contextUrl = parseUrl(specSelectors.url()).toString()\n\n if(op && op.operationId) {\n req.operationId = op.operationId\n } else if(op && pathName && method) {\n req.operationId = fn.opId(op, pathName, method)\n }\n\n if(specSelectors.isOAS3()) {\n const namespace = `${pathName}:${method}`\n\n req.server = oas3Selectors.selectedServer(namespace) || oas3Selectors.selectedServer()\n\n const namespaceVariables = oas3Selectors.serverVariables({\n server: req.server,\n namespace\n }).toJS()\n const globalVariables = oas3Selectors.serverVariables({ server: req.server }).toJS()\n\n req.serverVariables = Object.keys(namespaceVariables).length ? namespaceVariables : globalVariables\n\n req.requestContentType = oas3Selectors.requestContentType(pathName, method)\n req.responseContentType = oas3Selectors.responseContentType(pathName, method) || \"*/*\"\n const requestBody = oas3Selectors.requestBodyValue(pathName, method)\n const requestBodyInclusionSetting = oas3Selectors.requestBodyInclusionSetting(pathName, method)\n\n if(requestBody && requestBody.toJS) {\n req.requestBody = requestBody\n .map(\n (val) => {\n if (Map.isMap(val)) {\n return val.get(\"value\")\n }\n return val\n }\n )\n .filter(\n (value, key) => (Array.isArray(value)\n ? value.length !== 0\n : !isEmptyValue(value)\n ) || requestBodyInclusionSetting.get(key)\n )\n .toJS()\n } else {\n req.requestBody = requestBody\n }\n }\n\n let parsedRequest = Object.assign({}, req)\n parsedRequest = fn.buildRequest(parsedRequest)\n\n specActions.setRequest(req.pathName, req.method, parsedRequest)\n\n let requestInterceptorWrapper = async (r) => {\n let mutatedRequest = await requestInterceptor.apply(this, [r])\n let parsedMutatedRequest = Object.assign({}, mutatedRequest)\n specActions.setMutatedRequest(req.pathName, req.method, parsedMutatedRequest)\n return mutatedRequest\n }\n\n req.requestInterceptor = requestInterceptorWrapper\n req.responseInterceptor = responseInterceptor\n\n // track duration of request\n const startTime = Date.now()\n\n\n return fn.execute(req)\n .then( res => {\n res.duration = Date.now() - startTime\n specActions.setResponse(req.pathName, req.method, res)\n } )\n .catch(\n err => {\n // console.error(err)\n if(err.message === \"Failed to fetch\") {\n err.name = \"\"\n err.message = \"**Failed to fetch.** \\n**Possible Reasons:** \\n - CORS \\n - Network Failure \\n - URL scheme must be \\\"http\\\" or \\\"https\\\" for CORS request.\"\n }\n specActions.setResponse(req.pathName, req.method, {\n error: true, err: serializeError(err)\n })\n }\n )\n }\n\n\n// I'm using extras as a way to inject properties into the final, `execute` method - It's not great. Anyone have a better idea? @ponelat\nexport const execute = ( { path, method, ...extras }={} ) => (system) => {\n let { fn:{fetch}, specSelectors, specActions } = system\n let spec = specSelectors.specJsonWithResolvedSubtrees().toJS()\n let scheme = specSelectors.operationScheme(path, method)\n let { requestContentType, responseContentType } = specSelectors.contentTypeValues([path, method]).toJS()\n let isXml = /xml/i.test(requestContentType)\n let parameters = specSelectors.parameterValues([path, method], isXml).toJS()\n\n return specActions.executeRequest({\n ...extras,\n fetch,\n spec,\n pathName: path,\n method, parameters,\n requestContentType,\n scheme,\n responseContentType\n })\n}\n\nexport function clearResponse (path, method) {\n return {\n type: CLEAR_RESPONSE,\n payload:{ path, method }\n }\n}\n\nexport function clearRequest (path, method) {\n return {\n type: CLEAR_REQUEST,\n payload:{ path, method }\n }\n}\n\nexport function setScheme (scheme, path, method) {\n return {\n type: SET_SCHEME,\n payload: { scheme, path, method }\n }\n}\n","import reducers from \"./reducers\"\nimport * as actions from \"./actions\"\nimport * as selectors from \"./selectors\"\nimport * as wrapActions from \"./wrap-actions\"\n\nexport default function() {\n return {\n statePlugins: {\n spec: {\n wrapActions,\n reducers,\n actions,\n selectors\n }\n }\n }\n}\n","import { fromJS, List } from \"immutable\"\nimport { fromJSOrdered, validateParam, paramToValue } from \"core/utils\"\nimport win from \"../../window\"\n\n// selector-in-reducer is suboptimal, but `operationWithMeta` is more of a helper\nimport {\n specJsonWithResolvedSubtrees,\n parameterValues,\n parameterInclusionSettingFor,\n} from \"./selectors\"\n\nimport {\n UPDATE_SPEC,\n UPDATE_URL,\n UPDATE_JSON,\n UPDATE_PARAM,\n UPDATE_EMPTY_PARAM_INCLUSION,\n VALIDATE_PARAMS,\n SET_RESPONSE,\n SET_REQUEST,\n SET_MUTATED_REQUEST,\n UPDATE_RESOLVED,\n UPDATE_RESOLVED_SUBTREE,\n UPDATE_OPERATION_META_VALUE,\n CLEAR_RESPONSE,\n CLEAR_REQUEST,\n CLEAR_VALIDATE_PARAMS,\n SET_SCHEME\n} from \"./actions\"\nimport { paramToIdentifier } from \"../../utils\"\n\nexport default {\n\n [UPDATE_SPEC]: (state, action) => {\n return (typeof action.payload === \"string\")\n ? state.set(\"spec\", action.payload)\n : state\n },\n\n [UPDATE_URL]: (state, action) => {\n return state.set(\"url\", action.payload+\"\")\n },\n\n [UPDATE_JSON]: (state, action) => {\n return state.set(\"json\", fromJSOrdered(action.payload))\n },\n\n [UPDATE_RESOLVED]: (state, action) => {\n return state.setIn([\"resolved\"], fromJSOrdered(action.payload))\n },\n\n [UPDATE_RESOLVED_SUBTREE]: (state, action) => {\n const { value, path } = action.payload\n return state.setIn([\"resolvedSubtrees\", ...path], fromJSOrdered(value))\n },\n\n [UPDATE_PARAM]: ( state, {payload} ) => {\n let { path: pathMethod, paramName, paramIn, param, value, isXml } = payload\n\n let paramKey = param ? paramToIdentifier(param) : `${paramIn}.${paramName}`\n\n const valueKey = isXml ? \"value_xml\" : \"value\"\n\n return state.setIn(\n [\"meta\", \"paths\", ...pathMethod, \"parameters\", paramKey, valueKey],\n value\n )\n },\n\n [UPDATE_EMPTY_PARAM_INCLUSION]: ( state, {payload} ) => {\n let { pathMethod, paramName, paramIn, includeEmptyValue } = payload\n\n if(!paramName || !paramIn) {\n console.warn(\"Warning: UPDATE_EMPTY_PARAM_INCLUSION could not generate a paramKey.\")\n return state\n }\n\n const paramKey = `${paramIn}.${paramName}`\n\n return state.setIn(\n [\"meta\", \"paths\", ...pathMethod, \"parameter_inclusions\", paramKey],\n includeEmptyValue\n )\n },\n\n [VALIDATE_PARAMS]: ( state, { payload: { pathMethod, isOAS3 } } ) => {\n const op = specJsonWithResolvedSubtrees(state).getIn([\"paths\", ...pathMethod])\n const paramValues = parameterValues(state, pathMethod).toJS()\n\n return state.updateIn([\"meta\", \"paths\", ...pathMethod, \"parameters\"], fromJS({}), paramMeta => {\n return op.get(\"parameters\", List()).reduce((res, param) => {\n const value = paramToValue(param, paramValues)\n const isEmptyValueIncluded = parameterInclusionSettingFor(state, pathMethod, param.get(\"name\"), param.get(\"in\"))\n const errors = validateParam(param, value, {\n bypassRequiredCheck: isEmptyValueIncluded,\n isOAS3,\n })\n return res.setIn([paramToIdentifier(param), \"errors\"], fromJS(errors))\n }, paramMeta)\n })\n },\n [CLEAR_VALIDATE_PARAMS]: ( state, { payload: { pathMethod } } ) => {\n return state.updateIn( [ \"meta\", \"paths\", ...pathMethod, \"parameters\" ], fromJS([]), parameters => {\n return parameters.map(param => param.set(\"errors\", fromJS([])))\n })\n },\n\n [SET_RESPONSE]: (state, { payload: { res, path, method } } ) =>{\n let result\n if ( res.error ) {\n result = Object.assign({\n error: true,\n name: res.err.name,\n message: res.err.message,\n statusCode: res.err.statusCode\n }, res.err.response)\n } else {\n result = res\n }\n\n // Ensure headers\n result.headers = result.headers || {}\n\n let newState = state.setIn( [ \"responses\", path, method ], fromJSOrdered(result) )\n\n // ImmutableJS messes up Blob. Needs to reset its value.\n if (win.Blob && res.data instanceof win.Blob) {\n newState = newState.setIn( [ \"responses\", path, method, \"text\" ], res.data)\n }\n return newState\n },\n\n [SET_REQUEST]: (state, { payload: { req, path, method } } ) =>{\n return state.setIn( [ \"requests\", path, method ], fromJSOrdered(req))\n },\n\n [SET_MUTATED_REQUEST]: (state, { payload: { req, path, method } } ) =>{\n return state.setIn( [ \"mutatedRequests\", path, method ], fromJSOrdered(req))\n },\n\n [UPDATE_OPERATION_META_VALUE]: (state, { payload: { path, value, key } }) => {\n // path is a pathMethod tuple... can't change the name now.\n let operationPath = [\"paths\", ...path]\n let metaPath = [\"meta\", \"paths\", ...path]\n\n if(\n !state.getIn([\"json\", ...operationPath])\n && !state.getIn([\"resolved\", ...operationPath])\n && !state.getIn([\"resolvedSubtrees\", ...operationPath])\n ) {\n // do nothing if the operation does not exist\n return state\n }\n\n return state.setIn([...metaPath, key], fromJS(value))\n },\n\n [CLEAR_RESPONSE]: (state, { payload: { path, method } } ) =>{\n return state.deleteIn( [ \"responses\", path, method ])\n },\n\n [CLEAR_REQUEST]: (state, { payload: { path, method } } ) =>{\n return state.deleteIn( [ \"requests\", path, method ])\n },\n\n [SET_SCHEME]: (state, { payload: { scheme, path, method } } ) =>{\n if ( path && method ) {\n return state.setIn( [ \"scheme\", path, method ], scheme)\n }\n\n if (!path && !method) {\n return state.setIn( [ \"scheme\", \"_defaultScheme\" ], scheme)\n }\n\n }\n\n}\n","import { createSelector } from \"reselect\"\nimport { sorters } from \"core/utils\"\nimport { fromJS, Set, Map, OrderedMap, List } from \"immutable\"\nimport { paramToIdentifier } from \"../../utils\"\n\nconst DEFAULT_TAG = \"default\"\n\nconst OPERATION_METHODS = [\n \"get\", \"put\", \"post\", \"delete\", \"options\", \"head\", \"patch\", \"trace\"\n]\n\nconst state = state => {\n return state || Map()\n}\n\nexport const lastError = createSelector(\n state,\n spec => spec.get(\"lastError\")\n)\n\nexport const url = createSelector(\n state,\n spec => spec.get(\"url\")\n)\n\nexport const specStr = createSelector(\n state,\n spec => spec.get(\"spec\") || \"\"\n)\n\nexport const specSource = createSelector(\n state,\n spec => spec.get(\"specSource\") || \"not-editor\"\n)\n\nexport const specJson = createSelector(\n state,\n spec => spec.get(\"json\", Map())\n)\n\nexport const specJS = createSelector(\n specJson,\n (spec) => spec.toJS()\n)\n\nexport const specResolved = createSelector(\n state,\n spec => spec.get(\"resolved\", Map())\n)\n\nexport const specResolvedSubtree = (state, path) => {\n return state.getIn([\"resolvedSubtrees\", ...path], undefined)\n}\n\nconst mergerFn = (oldVal, newVal) => {\n if(Map.isMap(oldVal) && Map.isMap(newVal)) {\n if(newVal.get(\"$$ref\")) {\n // resolver artifacts indicated that this key was directly resolved\n // so we should drop the old value entirely\n return newVal\n }\n\n return OrderedMap().mergeWith(\n mergerFn,\n oldVal,\n newVal\n )\n }\n\n return newVal\n}\n\nexport const specJsonWithResolvedSubtrees = createSelector(\n state,\n spec => OrderedMap().mergeWith(\n mergerFn,\n spec.get(\"json\"),\n spec.get(\"resolvedSubtrees\")\n )\n)\n\n// Default Spec ( as an object )\nexport const spec = state => {\n let res = specJson(state)\n return res\n}\n\nexport const isOAS3 = createSelector(\n // isOAS3 is stubbed out here to work around an issue with injecting more selectors\n // in the OAS3 plugin, and to ensure that the function is always available.\n // It's not perfect, but our hybrid (core+plugin code) implementation for OAS3\n // needs this. //KS\n spec,\n\t() => false\n)\n\nexport const info = createSelector(\n spec,\n\tspec => returnSelfOrNewMap(spec && spec.get(\"info\"))\n)\n\nexport const externalDocs = createSelector(\n spec,\n\tspec => returnSelfOrNewMap(spec && spec.get(\"externalDocs\"))\n)\n\nexport const version = createSelector(\n\tinfo,\n\tinfo => info && info.get(\"version\")\n)\n\nexport const semver = createSelector(\n\tversion,\n\tversion => /v?([0-9]*)\\.([0-9]*)\\.([0-9]*)/i.exec(version).slice(1)\n)\n\nexport const paths = createSelector(\n\tspecJsonWithResolvedSubtrees,\n\tspec => spec.get(\"paths\")\n)\n\nexport const validOperationMethods = createSelector(() => [\"get\", \"put\", \"post\", \"delete\", \"options\", \"head\", \"patch\"])\n\nexport const operations = createSelector(\n paths,\n paths => {\n if(!paths || paths.size < 1)\n return List()\n\n let list = List()\n\n if(!paths || !paths.forEach) {\n return List()\n }\n\n paths.forEach((path, pathName) => {\n if(!path || !path.forEach) {\n return {}\n }\n path.forEach((operation, method) => {\n if(OPERATION_METHODS.indexOf(method) < 0) {\n return\n }\n list = list.push(fromJS({\n path: pathName,\n method,\n operation,\n id: `${method}-${pathName}`\n }))\n })\n })\n\n return list\n }\n)\n\nexport const consumes = createSelector(\n spec,\n spec => Set(spec.get(\"consumes\"))\n)\n\nexport const produces = createSelector(\n spec,\n spec => Set(spec.get(\"produces\"))\n)\n\nexport const security = createSelector(\n spec,\n spec => spec.get(\"security\", List())\n)\n\nexport const securityDefinitions = createSelector(\n spec,\n spec => spec.get(\"securityDefinitions\")\n)\n\n\nexport const findDefinition = ( state, name ) => {\n const resolvedRes = state.getIn([\"resolvedSubtrees\", \"definitions\", name], null)\n const unresolvedRes = state.getIn([\"json\", \"definitions\", name], null)\n return resolvedRes || unresolvedRes || null\n}\n\nexport const definitions = createSelector(\n spec,\n spec => {\n const res = spec.get(\"definitions\")\n return Map.isMap(res) ? res : Map()\n }\n)\n\nexport const basePath = createSelector(\n spec,\n spec => spec.get(\"basePath\")\n)\n\nexport const host = createSelector(\n spec,\n spec => spec.get(\"host\")\n)\n\nexport const schemes = createSelector(\n spec,\n spec => spec.get(\"schemes\", Map())\n)\n\nexport const operationsWithRootInherited = createSelector(\n operations,\n consumes,\n produces,\n (operations, consumes, produces) => {\n return operations.map( ops => ops.update(\"operation\", op => {\n if(op) {\n if(!Map.isMap(op)) { return }\n return op.withMutations( op => {\n if ( !op.get(\"consumes\") ) {\n op.update(\"consumes\", a => Set(a).merge(consumes))\n }\n if ( !op.get(\"produces\") ) {\n op.update(\"produces\", a => Set(a).merge(produces))\n }\n return op\n })\n } else {\n // return something with Immutable methods\n return Map()\n }\n\n }))\n }\n)\n\nexport const tags = createSelector(\n spec,\n json => {\n const tags = json.get(\"tags\", List())\n return List.isList(tags) ? tags.filter(tag => Map.isMap(tag)) : List()\n }\n)\n\nexport const tagDetails = (state, tag) => {\n let currentTags = tags(state) || List()\n return currentTags.filter(Map.isMap).find(t => t.get(\"name\") === tag, Map())\n}\n\nexport const operationsWithTags = createSelector(\n operationsWithRootInherited,\n tags,\n (operations, tags) => {\n return operations.reduce( (taggedMap, op) => {\n let tags = Set(op.getIn([\"operation\",\"tags\"]))\n if(tags.count() < 1)\n return taggedMap.update(DEFAULT_TAG, List(), ar => ar.push(op))\n return tags.reduce( (res, tag) => res.update(tag, List(), (ar) => ar.push(op)), taggedMap )\n }, tags.reduce( (taggedMap, tag) => {\n return taggedMap.set(tag.get(\"name\"), List())\n } , OrderedMap()))\n }\n)\n\nexport const taggedOperations = (state) => ({ getConfigs }) => {\n let { tagsSorter, operationsSorter } = getConfigs()\n return operationsWithTags(state)\n .sortBy(\n (val, key) => key, // get the name of the tag to be passed to the sorter\n (tagA, tagB) => {\n let sortFn = (typeof tagsSorter === \"function\" ? tagsSorter : sorters.tagsSorter[ tagsSorter ])\n return (!sortFn ? null : sortFn(tagA, tagB))\n }\n )\n .map((ops, tag) => {\n let sortFn = (typeof operationsSorter === \"function\" ? operationsSorter : sorters.operationsSorter[ operationsSorter ])\n let operations = (!sortFn ? ops : ops.sort(sortFn))\n\n return Map({ tagDetails: tagDetails(state, tag), operations: operations })\n })\n}\n\nexport const responses = createSelector(\n state,\n state => state.get( \"responses\", Map() )\n)\n\nexport const requests = createSelector(\n state,\n state => state.get( \"requests\", Map() )\n)\n\nexport const mutatedRequests = createSelector(\n state,\n state => state.get( \"mutatedRequests\", Map() )\n)\n\nexport const responseFor = (state, path, method) => {\n return responses(state).getIn([path, method], null)\n}\n\nexport const requestFor = (state, path, method) => {\n return requests(state).getIn([path, method], null)\n}\n\nexport const mutatedRequestFor = (state, path, method) => {\n return mutatedRequests(state).getIn([path, method], null)\n}\n\nexport const allowTryItOutFor = () => {\n // This is just a hook for now.\n return true\n}\n\nexport const parameterWithMetaByIdentity = (state, pathMethod, param) => {\n const opParams = specJsonWithResolvedSubtrees(state).getIn([\"paths\", ...pathMethod, \"parameters\"], OrderedMap())\n const metaParams = state.getIn([\"meta\", \"paths\", ...pathMethod, \"parameters\"], OrderedMap())\n\n const mergedParams = opParams.map((currentParam) => {\n const inNameKeyedMeta = metaParams.get(`${param.get(\"in\")}.${param.get(\"name\")}`)\n const hashKeyedMeta = metaParams.get(`${param.get(\"in\")}.${param.get(\"name\")}.hash-${param.hashCode()}`)\n return OrderedMap().merge(\n currentParam,\n inNameKeyedMeta,\n hashKeyedMeta\n )\n })\n return mergedParams.find(curr => curr.get(\"in\") === param.get(\"in\") && curr.get(\"name\") === param.get(\"name\"), OrderedMap())\n}\n\nexport const parameterInclusionSettingFor = (state, pathMethod, paramName, paramIn) => {\n const paramKey = `${paramIn}.${paramName}`\n return state.getIn([\"meta\", \"paths\", ...pathMethod, \"parameter_inclusions\", paramKey], false)\n}\n\n\nexport const parameterWithMeta = (state, pathMethod, paramName, paramIn) => {\n const opParams = specJsonWithResolvedSubtrees(state).getIn([\"paths\", ...pathMethod, \"parameters\"], OrderedMap())\n const currentParam = opParams.find(param => param.get(\"in\") === paramIn && param.get(\"name\") === paramName, OrderedMap())\n return parameterWithMetaByIdentity(state, pathMethod, currentParam)\n}\n\nexport const operationWithMeta = (state, path, method) => {\n const op = specJsonWithResolvedSubtrees(state).getIn([\"paths\", path, method], OrderedMap())\n const meta = state.getIn([\"meta\", \"paths\", path, method], OrderedMap())\n\n const mergedParams = op.get(\"parameters\", List()).map((param) => {\n return parameterWithMetaByIdentity(state, [path, method], param)\n })\n\n return OrderedMap()\n .merge(op, meta)\n .set(\"parameters\", mergedParams)\n}\n\n// Get the parameter value by parameter name\nexport function getParameter(state, pathMethod, name, inType) {\n pathMethod = pathMethod || []\n let params = state.getIn([\"meta\", \"paths\", ...pathMethod, \"parameters\"], fromJS([]))\n return params.find( (p) => {\n return Map.isMap(p) && p.get(\"name\") === name && p.get(\"in\") === inType\n }) || Map() // Always return a map\n}\n\nexport const hasHost = createSelector(\n spec,\n spec => {\n const host = spec.get(\"host\")\n return typeof host === \"string\" && host.length > 0 && host[0] !== \"/\"\n }\n)\n\n// Get the parameter values, that the user filled out\nexport function parameterValues(state, pathMethod, isXml) {\n pathMethod = pathMethod || []\n let paramValues = operationWithMeta(state, ...pathMethod).get(\"parameters\", List())\n return paramValues.reduce( (hash, p) => {\n let value = isXml && p.get(\"in\") === \"body\" ? p.get(\"value_xml\") : p.get(\"value\")\n return hash.set(paramToIdentifier(p, { allowHashes: false }), value)\n }, fromJS({}))\n}\n\n// True if any parameter includes `in: ?`\nexport function parametersIncludeIn(parameters, inValue=\"\") {\n if(List.isList(parameters)) {\n return parameters.some( p => Map.isMap(p) && p.get(\"in\") === inValue )\n }\n}\n\n// True if any parameter includes `type: ?`\nexport function parametersIncludeType(parameters, typeValue=\"\") {\n if(List.isList(parameters)) {\n return parameters.some( p => Map.isMap(p) && p.get(\"type\") === typeValue )\n }\n}\n\n// Get the consumes/produces value that the user selected\nexport function contentTypeValues(state, pathMethod) {\n pathMethod = pathMethod || []\n let op = specJsonWithResolvedSubtrees(state).getIn([\"paths\", ...pathMethod], fromJS({}))\n let meta = state.getIn([\"meta\", \"paths\", ...pathMethod], fromJS({}))\n let producesValue = currentProducesFor(state, pathMethod)\n\n const parameters = op.get(\"parameters\") || new List()\n\n const requestContentType = (\n meta.get(\"consumes_value\") ? meta.get(\"consumes_value\")\n : parametersIncludeType(parameters, \"file\") ? \"multipart/form-data\"\n : parametersIncludeType(parameters, \"formData\") ? \"application/x-www-form-urlencoded\"\n : undefined\n )\n\n return fromJS({\n requestContentType,\n responseContentType: producesValue\n })\n}\n\n// Get the currently selected produces value for an operation\nexport function currentProducesFor(state, pathMethod) {\n pathMethod = pathMethod || []\n\n const operation = specJsonWithResolvedSubtrees(state).getIn([ \"paths\", ...pathMethod], null)\n\n if(operation === null) {\n // return nothing if the operation does not exist\n return\n }\n\n const currentProducesValue = state.getIn([\"meta\", \"paths\", ...pathMethod, \"produces_value\"], null)\n const firstProducesArrayItem = operation.getIn([\"produces\", 0], null)\n\n return currentProducesValue || firstProducesArrayItem || \"application/json\"\n\n}\n\n// Get the produces options for an operation\nexport function producesOptionsFor(state, pathMethod) {\n pathMethod = pathMethod || []\n\n const spec = specJsonWithResolvedSubtrees(state)\n const operation = spec.getIn([ \"paths\", ...pathMethod], null)\n\n if(operation === null) {\n // return nothing if the operation does not exist\n return\n }\n\n const [path] = pathMethod\n\n const operationProduces = operation.get(\"produces\", null)\n const pathItemProduces = spec.getIn([\"paths\", path, \"produces\"], null)\n const globalProduces = spec.getIn([\"produces\"], null)\n\n return operationProduces || pathItemProduces || globalProduces\n}\n\n// Get the consumes options for an operation\nexport function consumesOptionsFor(state, pathMethod) {\n pathMethod = pathMethod || []\n\n const spec = specJsonWithResolvedSubtrees(state)\n const operation = spec.getIn([\"paths\", ...pathMethod], null)\n\n if (operation === null) {\n // return nothing if the operation does not exist\n return\n }\n\n const [path] = pathMethod\n\n const operationConsumes = operation.get(\"consumes\", null)\n const pathItemConsumes = spec.getIn([\"paths\", path, \"consumes\"], null)\n const globalConsumes = spec.getIn([\"consumes\"], null)\n\n return operationConsumes || pathItemConsumes || globalConsumes\n}\n\nexport const operationScheme = ( state, path, method ) => {\n let url = state.get(\"url\")\n let matchResult = url.match(/^([a-z][a-z0-9+\\-.]*):/)\n let urlScheme = Array.isArray(matchResult) ? matchResult[1] : null\n\n return state.getIn([\"scheme\", path, method]) || state.getIn([\"scheme\", \"_defaultScheme\"]) || urlScheme || \"\"\n}\n\nexport const canExecuteScheme = ( state, path, method ) => {\n return [\"http\", \"https\"].indexOf(operationScheme(state, path, method)) > -1\n}\n\nexport const validationErrors = (state, pathMethod) => {\n pathMethod = pathMethod || []\n let paramValues = state.getIn([\"meta\", \"paths\", ...pathMethod, \"parameters\"], fromJS([]))\n const result = []\n\n paramValues.forEach( (p) => {\n let errors = p.get(\"errors\")\n if ( errors && errors.count() ) {\n errors.forEach( e => result.push(e))\n }\n })\n\n return result\n}\n\nexport const validateBeforeExecute = (state, pathMethod) => {\n return validationErrors(state, pathMethod).length === 0\n}\n\nexport const getOAS3RequiredRequestBodyContentType = (state, pathMethod) => {\n let requiredObj = {\n requestBody: false,\n requestContentType: {}\n }\n let requestBody = state.getIn([\"resolvedSubtrees\", \"paths\", ...pathMethod, \"requestBody\"], fromJS([]))\n if (requestBody.size < 1) {\n return requiredObj\n }\n if (requestBody.getIn([\"required\"])) {\n requiredObj.requestBody = requestBody.getIn([\"required\"])\n }\n requestBody.getIn([\"content\"]).entrySeq().forEach((contentType) => { // e.g application/json\n const key = contentType[0]\n if (contentType[1].getIn([\"schema\", \"required\"])) {\n const val = contentType[1].getIn([\"schema\", \"required\"]).toJS()\n requiredObj.requestContentType[key] = val\n }\n })\n return requiredObj\n}\n\nexport const isMediaTypeSchemaPropertiesEqual = ( state, pathMethod, currentMediaType, targetMediaType) => {\n if((currentMediaType || targetMediaType) && currentMediaType === targetMediaType ) {\n return true\n }\n let requestBodyContent = state.getIn([\"resolvedSubtrees\", \"paths\", ...pathMethod, \"requestBody\", \"content\"], fromJS([]))\n if (requestBodyContent.size < 2 || !currentMediaType || !targetMediaType) {\n // nothing to compare\n return false\n }\n let currentMediaTypeSchemaProperties = requestBodyContent.getIn([currentMediaType, \"schema\", \"properties\"], fromJS([]))\n let targetMediaTypeSchemaProperties = requestBodyContent.getIn([targetMediaType, \"schema\", \"properties\"], fromJS([]))\n return !!currentMediaTypeSchemaProperties.equals(targetMediaTypeSchemaProperties)\n}\n\nfunction returnSelfOrNewMap(obj) {\n // returns obj if obj is an Immutable map, else returns a new Map\n return Map.isMap(obj) ? obj : new Map()\n}\n","import get from \"lodash/get\"\n\nexport const updateSpec = (ori, {specActions}) => (...args) => {\n ori(...args)\n specActions.parseToJson(...args)\n}\n\nexport const updateJsonSpec = (ori, {specActions}) => (...args) => {\n ori(...args)\n\n specActions.invalidateResolvedSubtreeCache()\n\n // Trigger resolution of any path-level $refs.\n const [json] = args\n const pathItems = get(json, [\"paths\"]) || {}\n const pathItemKeys = Object.keys(pathItems)\n\n pathItemKeys.forEach(k => {\n const val = get(pathItems, [k])\n\n if(val.$ref) {\n specActions.requestResolvedSubtree([\"paths\", k])\n }\n })\n\n // Trigger resolution of any securitySchemes-level $refs.\n specActions.requestResolvedSubtree([\"components\", \"securitySchemes\"])\n}\n\n// Log the request ( just for debugging, shouldn't affect prod )\nexport const executeRequest = (ori, { specActions }) => (req) => {\n specActions.logRequest(req)\n return ori(req)\n}\n\nexport const validateParams = (ori, { specSelectors }) => (req) => {\n return ori(req, specSelectors.isOAS3())\n}\n","export const loaded = (ori, system) => (...args) => {\n ori(...args)\n const value = system.getConfigs().withCredentials\n \n if(value !== undefined) {\n system.fn.fetch.withCredentials = typeof value === \"string\" ? (value === \"true\") : !!value\n }\n}\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_swagger_client_es_resolver_strategies_generic_08dd5200__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_swagger_client_es_resolver_strategies_openapi_2_ff6e79cf__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_swagger_client_es_resolver_strategies_openapi_3_0_2fa0ff7c__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_swagger_client_es_resolver_strategies_openapi_3_1_apidom_5e628d39__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"makeResolve\"]: () => __WEBPACK_EXTERNAL_MODULE_swagger_client_es_resolver_f879c638__.makeResolve });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"buildRequest\"]: () => __WEBPACK_EXTERNAL_MODULE_swagger_client_es_execute_d486d3d6__.buildRequest, [\"execute\"]: () => __WEBPACK_EXTERNAL_MODULE_swagger_client_es_execute_d486d3d6__.execute });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_swagger_client_es_http_69655560__[\"default\"], [\"makeHttp\"]: () => __WEBPACK_EXTERNAL_MODULE_swagger_client_es_http_69655560__.makeHttp, [\"serializeRes\"]: () => __WEBPACK_EXTERNAL_MODULE_swagger_client_es_http_69655560__.serializeRes });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"makeResolveSubtree\"]: () => __WEBPACK_EXTERNAL_MODULE_swagger_client_es_subtree_resolver_741cb9d9__.makeResolveSubtree });","import genericResolveStrategy from \"swagger-client/es/resolver/strategies/generic\"\nimport openApi2ResolveStrategy from \"swagger-client/es/resolver/strategies/openapi-2\"\nimport openApi30ResolveStrategy from \"swagger-client/es/resolver/strategies/openapi-3-0\"\nimport openApi31ApiDOMResolveStrategy from \"swagger-client/es/resolver/strategies/openapi-3-1-apidom\"\nimport { makeResolve } from \"swagger-client/es/resolver\"\nimport { execute, buildRequest } from \"swagger-client/es/execute\"\nimport Http, { makeHttp, serializeRes } from \"swagger-client/es/http\"\nimport { makeResolveSubtree } from \"swagger-client/es/subtree-resolver\"\nimport { opId } from \"swagger-client/es/helpers\"\nimport { loaded } from \"./configs-wrap-actions\"\n\nexport default function({ configs, getConfigs }) {\n return {\n fn: {\n fetch: makeHttp(Http, configs.preFetch, configs.postFetch),\n buildRequest,\n execute,\n resolve: makeResolve({\n strategies: [\n openApi31ApiDOMResolveStrategy,\n openApi30ResolveStrategy,\n openApi2ResolveStrategy,\n genericResolveStrategy,\n ],\n }),\n resolveSubtree: async (obj, path, options = {}) => {\n const freshConfigs = getConfigs()\n const defaultOptions = {\n modelPropertyMacro: freshConfigs.modelPropertyMacro,\n parameterMacro: freshConfigs.parameterMacro,\n requestInterceptor: freshConfigs.requestInterceptor,\n responseInterceptor: freshConfigs.responseInterceptor,\n strategies: [\n openApi31ApiDOMResolveStrategy,\n openApi30ResolveStrategy,\n openApi2ResolveStrategy,\n genericResolveStrategy,\n ],\n }\n\n return makeResolveSubtree(defaultOptions)(obj, path, options)\n },\n serializeRes,\n opId\n },\n statePlugins: {\n configs: {\n wrapActions: {\n loaded,\n }\n }\n },\n }\n}\n","import { shallowEqualKeys } from \"core/utils\"\n\nexport default function() {\n return {\n fn: { shallowEqualKeys }\n }\n}\n","export const getDisplayName = (WrappedComponent) => WrappedComponent.displayName || WrappedComponent.name || \"Component\"\n","import { memoize } from \"core/utils\"\n\nimport { getComponent, render, withMappedContainer } from \"./root-injects\"\nimport { getDisplayName } from \"./fn\"\nimport memoizeN from \"../../../helpers/memoizeN\"\n\nconst memoizeForGetComponent = (fn) => {\n const resolver = (...args) => JSON.stringify(args)\n return memoize(fn, resolver)\n}\n\nconst memoizeForWithMappedContainer = (fn) => {\n const resolver = (...args) => args\n return memoizeN(fn, resolver)\n}\n\nconst viewPlugin = ({getComponents, getStore, getSystem}) => {\n // getComponent should be passed into makeMappedContainer, _already_ memoized... otherwise we have a big performance hit ( think, really big )\n const memGetComponent = memoizeForGetComponent(getComponent(getSystem, getStore, getComponents))\n const memMakeMappedContainer = memoizeForWithMappedContainer(withMappedContainer(getSystem, getStore, memGetComponent))\n\n return {\n rootInjects: {\n getComponent: memGetComponent,\n makeMappedContainer: memMakeMappedContainer,\n render: render(getSystem, getStore, getComponent, getComponents),\n },\n fn: {\n getDisplayName,\n },\n }\n}\n\nexport default viewPlugin\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_react_dom_7dac9eee__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"Provider\"]: () => __WEBPACK_EXTERNAL_MODULE_react_redux_87be03b0__.Provider, [\"connect\"]: () => __WEBPACK_EXTERNAL_MODULE_react_redux_87be03b0__.connect });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_lodash_omit_d930e0f3__[\"default\"] });","import React, { Component } from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { compose } from \"redux\"\nimport { connect, Provider } from \"react-redux\"\nimport omit from \"lodash/omit\"\nimport identity from \"lodash/identity\"\n\nconst withSystem = (getSystem) => (WrappedComponent) => {\n const { fn } = getSystem()\n\n class WithSystem extends Component {\n render() {\n return \n }\n }\n WithSystem.displayName = `WithSystem(${fn.getDisplayName(WrappedComponent)})`\n return WithSystem\n}\n\nconst withRoot = (getSystem, reduxStore) => (WrappedComponent) => {\n const { fn } = getSystem()\n\n class WithRoot extends Component {\n render() {\n return (\n \n \n \n )\n }\n }\n WithRoot.displayName = `WithRoot(${fn.getDisplayName(WrappedComponent)})`\n return WithRoot\n}\n\nconst withConnect = (getSystem, WrappedComponent, reduxStore) => {\n const mapStateToProps = (state, ownProps) => {\n const props = {...ownProps, ...getSystem()}\n const customMapStateToProps = WrappedComponent.prototype?.mapStateToProps || (state => ({state}))\n return customMapStateToProps(state, props)\n }\n\n return compose(\n reduxStore ? withRoot(getSystem, reduxStore) : identity,\n connect(mapStateToProps),\n withSystem(getSystem),\n )(WrappedComponent)\n}\n\nconst handleProps = (getSystem, mapping, props, oldProps) => {\n for (const prop in mapping) {\n const fn = mapping[prop]\n\n if (typeof fn === \"function\") {\n fn(props[prop], oldProps[prop], getSystem())\n }\n }\n}\n\nexport const withMappedContainer = (getSystem, getStore, memGetComponent) => (componentName, mapping) => {\n const { fn } = getSystem()\n const WrappedComponent = memGetComponent(componentName, \"root\")\n\n class WithMappedContainer extends Component {\n constructor(props, context) {\n super(props, context)\n handleProps(getSystem, mapping, props, {})\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n handleProps(getSystem, mapping, nextProps, this.props)\n }\n\n render() {\n const cleanProps = omit(this.props, mapping ? Object.keys(mapping) : [])\n return \n }\n }\n WithMappedContainer.displayName = `WithMappedContainer(${fn.getDisplayName(WrappedComponent)})`\n return WithMappedContainer\n}\n\nexport const render = (getSystem, getStore, getComponent, getComponents) => (domNode) => {\n const App = getComponent(getSystem, getStore, getComponents)(\"App\", \"root\")\n ReactDOM.render(, domNode)\n}\n\nexport const getComponent = (getSystem, getStore, getComponents) => (componentName, container, config = {}) => {\n\n if (typeof componentName !== \"string\")\n throw new TypeError(\"Need a string, to fetch a component. Was given a \" + typeof componentName)\n\n // getComponent has a config object as a third, optional parameter\n // using the config object requires the presence of the second parameter, container\n // e.g. getComponent(\"JsonSchema_string_whatever\", false, { failSilently: true })\n const component = getComponents(componentName)\n\n if (!component) {\n if (!config.failSilently) {\n getSystem().log.warn(\"Could not find component:\", componentName)\n }\n return null\n }\n\n if(!container) {\n return component\n }\n\n if(container === \"root\") {\n return withConnect(getSystem, component, getStore())\n }\n\n // container == truthy\n return withConnect(getSystem, component)\n}\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_react_syntax_highlighter_dist_esm_light_746e1958__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_react_syntax_highlighter_dist_esm_languages_hljs_javascript_e22911f7__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_react_syntax_highlighter_dist_esm_languages_hljs_json_b876afc5__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_react_syntax_highlighter_dist_esm_languages_hljs_xml_a81c807b__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_react_syntax_highlighter_dist_esm_languages_hljs_bash_1621c621__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_react_syntax_highlighter_dist_esm_languages_hljs_yaml_02838f34__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_react_syntax_highlighter_dist_esm_languages_hljs_http_4e924b23__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_react_syntax_highlighter_dist_esm_languages_hljs_powershell_d51eb4f6__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_react_syntax_highlighter_dist_esm_styles_hljs_agate_99a46aa2__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_react_syntax_highlighter_dist_esm_styles_hljs_arta_570691fc__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_react_syntax_highlighter_dist_esm_styles_hljs_monokai_2529bafb__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_react_syntax_highlighter_dist_esm_styles_hljs_nord_5bfa1099__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_react_syntax_highlighter_dist_esm_styles_hljs_obsidian_a278dd52__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_react_syntax_highlighter_dist_esm_styles_hljs_tomorrow_night_63765df9__[\"default\"] });","import SyntaxHighlighter from \"react-syntax-highlighter/dist/esm/light\"\nimport js from \"react-syntax-highlighter/dist/esm/languages/hljs/javascript\"\nimport json from \"react-syntax-highlighter/dist/esm/languages/hljs/json\"\nimport xml from \"react-syntax-highlighter/dist/esm/languages/hljs/xml\"\nimport bash from \"react-syntax-highlighter/dist/esm/languages/hljs/bash\"\nimport yaml from \"react-syntax-highlighter/dist/esm/languages/hljs/yaml\"\nimport http from \"react-syntax-highlighter/dist/esm/languages/hljs/http\"\nimport powershell from \"react-syntax-highlighter/dist/esm/languages/hljs/powershell\"\nimport javascript from \"react-syntax-highlighter/dist/esm/languages/hljs/javascript\"\n\nimport agate from \"react-syntax-highlighter/dist/esm/styles/hljs/agate\"\nimport arta from \"react-syntax-highlighter/dist/esm/styles/hljs/arta\"\nimport monokai from \"react-syntax-highlighter/dist/esm/styles/hljs/monokai\"\nimport nord from \"react-syntax-highlighter/dist/esm/styles/hljs/nord\"\nimport obsidian from \"react-syntax-highlighter/dist/esm/styles/hljs/obsidian\"\nimport tomorrowNight from \"react-syntax-highlighter/dist/esm/styles/hljs/tomorrow-night\"\n\nSyntaxHighlighter.registerLanguage(\"json\", json)\nSyntaxHighlighter.registerLanguage(\"js\", js)\nSyntaxHighlighter.registerLanguage(\"xml\", xml)\nSyntaxHighlighter.registerLanguage(\"yaml\", yaml)\nSyntaxHighlighter.registerLanguage(\"http\", http)\nSyntaxHighlighter.registerLanguage(\"bash\", bash)\nSyntaxHighlighter.registerLanguage(\"powershell\", powershell)\nSyntaxHighlighter.registerLanguage(\"javascript\", javascript)\n\nconst styles = {agate, arta, monokai, nord, obsidian, \"tomorrow-night\": tomorrowNight}\nexport const availableStyles = Object.keys(styles)\n\nexport const getStyle = name => {\n if (!availableStyles.includes(name)) {\n console.warn(`Request style '${name}' is not available, returning default instead`)\n return agate\n }\n return styles[name]\n}\n\nexport {SyntaxHighlighter, styles}\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_starts_with_a4b73998__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"sanitizeUrl\"]: () => __WEBPACK_EXTERNAL_MODULE__braintree_sanitize_url_2340607f__.sanitizeUrl });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_lodash_camelCase_81fadc19__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_lodash_upperFirst_9993ecb4__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_lodash_find_e8ecc2cb__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_lodash_eq_b41b823a__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_css_escape_2d301448__[\"default\"] });","/*\n ATTENTION! This file (but not the functions within) is deprecated.\n\n You should probably add a new file to `./helpers/` instead of adding a new\n function here.\n\n One-function-per-file is a better pattern than what we have here.\n\n If you're refactoring something in here, feel free to break it out to a file\n in `./helpers` if you have the time.\n*/\nimport Im, { fromJS, Set } from \"immutable\"\nimport { sanitizeUrl as braintreeSanitizeUrl } from \"@braintree/sanitize-url\"\nimport camelCase from \"lodash/camelCase\"\nimport upperFirst from \"lodash/upperFirst\"\nimport _memoize from \"lodash/memoize\"\nimport find from \"lodash/find\"\nimport some from \"lodash/some\"\nimport eq from \"lodash/eq\"\nimport isFunction from \"lodash/isFunction\"\nimport win from \"./window\"\nimport cssEscape from \"css.escape\"\nimport getParameterSchema from \"../helpers/get-parameter-schema\"\nimport randomBytes from \"randombytes\"\nimport shaJs from \"sha.js\"\n\nconst DEFAULT_RESPONSE_KEY = \"default\"\n\nexport const isImmutable = (maybe) => Im.Iterable.isIterable(maybe)\n\nexport function objectify (thing) {\n if(!isObject(thing))\n return {}\n if(isImmutable(thing))\n return thing.toJS()\n return thing\n}\n\nexport function arrayify (thing) {\n if(!thing)\n return []\n\n if(thing.toArray)\n return thing.toArray()\n\n return normalizeArray(thing)\n}\n\nexport function fromJSOrdered(js) {\n if (isImmutable(js)) {\n return js // Can't do much here\n }\n if (js instanceof win.File) {\n return js\n }\n if (!isObject(js)) {\n return js\n }\n if (Array.isArray(js)) {\n return Im.Seq(js).map(fromJSOrdered).toList()\n }\n if (isFunction(js.entries)) {\n // handle multipart/form-data\n const objWithHashedKeys = createObjWithHashedKeys(js)\n return Im.OrderedMap(objWithHashedKeys).map(fromJSOrdered)\n }\n return Im.OrderedMap(js).map(fromJSOrdered)\n}\n\n/**\n * Convert a FormData object into plain object\n * Append a hashIdx and counter to the key name, if multiple exists\n * if single, key name = \n * if multiple, key name = \n * @example single entry for vegetable\n * fdObj.entries.vegtables: \"carrot\"\n * // returns newObj.vegetables : \"carrot\"\n * @example multiple entries for fruits[]\n * fdObj.entries.fruits[]: \"apple\"\n * // returns newObj.fruits[]_**[]1 : \"apple\"\n * fdObj.entries.fruits[]: \"banana\"\n * // returns newObj.fruits[]_**[]2 : \"banana\"\n * fdObj.entries.fruits[]: \"grape\"\n * // returns newObj.fruits[]_**[]3 : \"grape\"\n * @param {FormData} fdObj - a FormData object\n * @return {Object} - a plain object\n */\nexport function createObjWithHashedKeys (fdObj) {\n if (!isFunction(fdObj.entries)) {\n return fdObj // not a FormData object with iterable\n }\n const newObj = {}\n const hashIdx = \"_**[]\" // our internal identifier\n const trackKeys = {}\n for (let pair of fdObj.entries()) {\n if (!newObj[pair[0]] && !(trackKeys[pair[0]] && trackKeys[pair[0]].containsMultiple)) {\n newObj[pair[0]] = pair[1] // first key name: no hash required\n } else {\n if (!trackKeys[pair[0]]) {\n // initiate tracking key for multiple\n trackKeys[pair[0]] = {\n containsMultiple: true,\n length: 1\n }\n // \"reassign\" first pair to matching hashed format for multiple\n let hashedKeyFirst = `${pair[0]}${hashIdx}${trackKeys[pair[0]].length}`\n newObj[hashedKeyFirst] = newObj[pair[0]]\n // remove non-hashed key of multiple\n delete newObj[pair[0]] // first\n }\n trackKeys[pair[0]].length += 1\n let hashedKeyCurrent = `${pair[0]}${hashIdx}${trackKeys[pair[0]].length}`\n newObj[hashedKeyCurrent] = pair[1]\n }\n }\n return newObj\n}\n\nexport function bindToState(obj, state) {\n\tvar newObj = {}\n\tObject.keys(obj)\n .filter(key => typeof obj[key] === \"function\")\n .forEach(key => newObj[key] = obj[key].bind(null, state))\n\treturn newObj\n}\n\nexport function normalizeArray(arr) {\n if(Array.isArray(arr))\n return arr\n return [arr]\n}\n\nexport function isFn(fn) {\n return typeof fn === \"function\"\n}\n\nexport function isObject(obj) {\n return !!obj && typeof obj === \"object\"\n}\n\nexport function isFunc(thing) {\n return typeof(thing) === \"function\"\n}\n\nexport function isArray(thing) {\n return Array.isArray(thing)\n}\n\n// I've changed memoize libs more than once, so I'm using this a way to make that simpler\nexport const memoize = _memoize\n\nexport function objMap(obj, fn) {\n return Object.keys(obj).reduce((newObj, key) => {\n newObj[key] = fn(obj[key], key)\n return newObj\n }, {})\n}\n\nexport function objReduce(obj, fn) {\n return Object.keys(obj).reduce((newObj, key) => {\n let res = fn(obj[key], key)\n if(res && typeof res === \"object\")\n Object.assign(newObj, res)\n return newObj\n }, {})\n}\n\n// Redux middleware that exposes the system to async actions (like redux-thunk, but with out system instead of (dispatch, getState)\nexport function systemThunkMiddleware(getSystem) {\n return ({ dispatch, getState }) => { // eslint-disable-line no-unused-vars\n return next => action => {\n if (typeof action === \"function\") {\n return action(getSystem())\n }\n\n return next(action)\n }\n }\n}\n\nexport function defaultStatusCode ( responses ) {\n let codes = responses.keySeq()\n return codes.contains(DEFAULT_RESPONSE_KEY) ? DEFAULT_RESPONSE_KEY : codes.filter( key => (key+\"\")[0] === \"2\").sort().first()\n}\n\n\n/**\n * Returns an Immutable List, safely\n * @param {Immutable.Iterable} iterable the iterable to get the key from\n * @param {String|[String]} key either an array of keys, or a single key\n * @returns {Immutable.List} either iterable.get(keys) or an empty Immutable.List\n */\nexport function getList(iterable, keys) {\n if(!Im.Iterable.isIterable(iterable)) {\n return Im.List()\n }\n let val = iterable.getIn(Array.isArray(keys) ? keys : [keys])\n return Im.List.isList(val) ? val : Im.List()\n}\n\n/**\n * Take an immutable map, and convert to a list.\n * Where the keys are merged with the value objects\n * @param {Immutable.Map} map, the map to convert\n * @param {String} key the key to use, when merging the `key`\n * @returns {Immutable.List}\n */\nexport function mapToList(map, keyNames=\"key\", collectedKeys=Im.Map()) {\n if(!Im.Map.isMap(map) || !map.size) {\n return Im.List()\n }\n\n if(!Array.isArray(keyNames)) {\n keyNames = [ keyNames ]\n }\n\n if(keyNames.length < 1) {\n return map.merge(collectedKeys)\n }\n\n // I need to avoid `flatMap` from merging in the Maps, as well as the lists\n let list = Im.List()\n let keyName = keyNames[0]\n for(let entry of map.entries()) {\n let [key, val] = entry\n let nextList = mapToList(val, keyNames.slice(1), collectedKeys.set(keyName, key))\n if(Im.List.isList(nextList)) {\n list = list.concat(nextList)\n } else {\n list = list.push(nextList)\n }\n }\n\n return list\n}\n\nexport function extractFileNameFromContentDispositionHeader(value){\n let patterns = [\n /filename\\*=[^']+'\\w*'\"([^\"]+)\";?/i,\n /filename\\*=[^']+'\\w*'([^;]+);?/i,\n /filename=\"([^;]*);?\"/i,\n /filename=([^;]*);?/i\n ]\n\n let responseFilename\n patterns.some(regex => {\n responseFilename = regex.exec(value)\n return responseFilename !== null\n })\n\n if (responseFilename !== null && responseFilename.length > 1) {\n try {\n return decodeURIComponent(responseFilename[1])\n } catch(e) {\n console.error(e)\n }\n }\n\n return null\n}\n\n// PascalCase, aka UpperCamelCase\nexport function pascalCase(str) {\n return upperFirst(camelCase(str))\n}\n\n// Remove the ext of a filename, and pascalCase it\nexport function pascalCaseFilename(filename) {\n return pascalCase(filename.replace(/\\.[^./]*$/, \"\"))\n}\n\n// Check if ...\n// - new props\n// - If immutable, use .is()\n// - if in explicit objectList, then compare using _.eq\n// - else use ===\nexport const propChecker = (props, nextProps, objectList=[], ignoreList=[]) => {\n\n if(Object.keys(props).length !== Object.keys(nextProps).length) {\n return true\n }\n\n return (\n some(props, (a, name) => {\n if(ignoreList.includes(name)) {\n return false\n }\n let b = nextProps[name]\n\n if(Im.Iterable.isIterable(a)) {\n return !Im.is(a,b)\n }\n\n // Not going to compare objects\n if(typeof a === \"object\" && typeof b === \"object\") {\n return false\n }\n\n return a !== b\n })\n || objectList.some( objectPropName => !eq(props[objectPropName], nextProps[objectPropName])))\n}\n\nexport const validateMaximum = ( val, max ) => {\n if (val > max) {\n return `Value must be less than ${max}`\n }\n}\n\nexport const validateMinimum = ( val, min ) => {\n if (val < min) {\n return `Value must be greater than ${min}`\n }\n}\n\nexport const validateNumber = ( val ) => {\n if (!/^-?\\d+(\\.?\\d+)?$/.test(val)) {\n return \"Value must be a number\"\n }\n}\n\nexport const validateInteger = ( val ) => {\n if (!/^-?\\d+$/.test(val)) {\n return \"Value must be an integer\"\n }\n}\n\nexport const validateFile = ( val ) => {\n if ( val && !(val instanceof win.File) ) {\n return \"Value must be a file\"\n }\n}\n\nexport const validateBoolean = ( val ) => {\n if ( !(val === \"true\" || val === \"false\" || val === true || val === false) ) {\n return \"Value must be a boolean\"\n }\n}\n\nexport const validateString = ( val ) => {\n if ( val && typeof val !== \"string\" ) {\n return \"Value must be a string\"\n }\n}\n\nexport const validateDateTime = (val) => {\n if (isNaN(Date.parse(val))) {\n return \"Value must be a DateTime\"\n }\n}\n\nexport const validateGuid = (val) => {\n val = val.toString().toLowerCase()\n if (!/^[{(]?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[)}]?$/.test(val)) {\n return \"Value must be a Guid\"\n }\n}\n\nexport const validateMaxLength = (val, max) => {\n if (val.length > max) {\n return `Value must be no longer than ${max} character${max !== 1 ? \"s\" : \"\"}`\n }\n}\n\nexport const validateUniqueItems = (val, uniqueItems) => {\n if (!val) {\n return\n }\n if (uniqueItems === \"true\" || uniqueItems === true) {\n const list = fromJS(val)\n const set = list.toSet()\n const hasDuplicates = val.length > set.size\n if(hasDuplicates) {\n let errorsPerIndex = Set()\n list.forEach((item, i) => {\n if(list.filter(v => isFunc(v.equals) ? v.equals(item) : v === item).size > 1) {\n errorsPerIndex = errorsPerIndex.add(i)\n }\n })\n if(errorsPerIndex.size !== 0) {\n return errorsPerIndex.map(i => ({index: i, error: \"No duplicates allowed.\"})).toArray()\n }\n }\n }\n}\n\nexport const validateMinItems = (val, min) => {\n if (!val && min >= 1 || val && val.length < min) {\n return `Array must contain at least ${min} item${min === 1 ? \"\" : \"s\"}`\n }\n}\n\nexport const validateMaxItems = (val, max) => {\n if (val && val.length > max) {\n return `Array must not contain more then ${max} item${max === 1 ? \"\" : \"s\"}`\n }\n}\n\nexport const validateMinLength = (val, min) => {\n if (val.length < min) {\n return `Value must be at least ${min} character${min !== 1 ? \"s\" : \"\"}`\n }\n}\n\nexport const validatePattern = (val, rxPattern) => {\n var patt = new RegExp(rxPattern)\n if (!patt.test(val)) {\n return \"Value must follow pattern \" + rxPattern\n }\n}\n\nfunction validateValueBySchema(value, schema, requiredByParam, bypassRequiredCheck, parameterContentMediaType) {\n if(!schema) return []\n let errors = []\n let nullable = schema.get(\"nullable\")\n let requiredBySchema = schema.get(\"required\")\n let maximum = schema.get(\"maximum\")\n let minimum = schema.get(\"minimum\")\n let type = schema.get(\"type\")\n let format = schema.get(\"format\")\n let maxLength = schema.get(\"maxLength\")\n let minLength = schema.get(\"minLength\")\n let uniqueItems = schema.get(\"uniqueItems\")\n let maxItems = schema.get(\"maxItems\")\n let minItems = schema.get(\"minItems\")\n let pattern = schema.get(\"pattern\")\n\n const schemaRequiresValue = requiredByParam || requiredBySchema === true\n const hasValue = value !== undefined && value !== null\n const isValidEmpty = !schemaRequiresValue && !hasValue\n\n const needsExplicitConstraintValidation = hasValue && type === \"array\"\n\n const requiresFurtherValidation =\n schemaRequiresValue\n || needsExplicitConstraintValidation\n || !isValidEmpty\n\n const isValidNullable = nullable && value === null\n\n // will not be included in the request or [schema / value] does not [allow / require] further analysis.\n const noFurtherValidationNeeded =\n isValidNullable\n || !type\n || !requiresFurtherValidation\n\n if(noFurtherValidationNeeded) {\n return []\n }\n\n // Further this point the parameter is considered worth to validate\n let stringCheck = type === \"string\" && value\n let arrayCheck = type === \"array\" && Array.isArray(value) && value.length\n let arrayListCheck = type === \"array\" && Im.List.isList(value) && value.count()\n let arrayStringCheck = type === \"array\" && typeof value === \"string\" && value\n let fileCheck = type === \"file\" && value instanceof win.File\n let booleanCheck = type === \"boolean\" && (value || value === false)\n let numberCheck = type === \"number\" && (value || value === 0)\n let integerCheck = type === \"integer\" && (value || value === 0)\n let objectCheck = type === \"object\" && typeof value === \"object\" && value !== null\n let objectStringCheck = type === \"object\" && typeof value === \"string\" && value\n\n const allChecks = [\n stringCheck, arrayCheck, arrayListCheck, arrayStringCheck, fileCheck,\n booleanCheck, numberCheck, integerCheck, objectCheck, objectStringCheck,\n ]\n\n const passedAnyCheck = allChecks.some(v => !!v)\n\n if (schemaRequiresValue && !passedAnyCheck && !bypassRequiredCheck) {\n errors.push(\"Required field is not provided\")\n return errors\n }\n if (\n type === \"object\" &&\n (parameterContentMediaType === null ||\n parameterContentMediaType === \"application/json\")\n ) {\n let objectVal = value\n if(typeof value === \"string\") {\n try {\n objectVal = JSON.parse(value)\n } catch (e) {\n errors.push(\"Parameter string value must be valid JSON\")\n return errors\n }\n }\n if(schema && schema.has(\"required\") && isFunc(requiredBySchema.isList) && requiredBySchema.isList()) {\n requiredBySchema.forEach(key => {\n if(objectVal[key] === undefined) {\n errors.push({ propKey: key, error: \"Required property not found\" })\n }\n })\n }\n if(schema && schema.has(\"properties\")) {\n schema.get(\"properties\").forEach((val, key) => {\n const errs = validateValueBySchema(objectVal[key], val, false, bypassRequiredCheck, parameterContentMediaType)\n errors.push(...errs\n .map((error) => ({ propKey: key, error })))\n })\n }\n }\n\n if (pattern) {\n let err = validatePattern(value, pattern)\n if (err) errors.push(err)\n }\n\n if (minItems) {\n if (type === \"array\") {\n let err = validateMinItems(value, minItems)\n if (err) errors.push(err)\n }\n }\n\n if (maxItems) {\n if (type === \"array\") {\n let err = validateMaxItems(value, maxItems)\n if (err) errors.push({ needRemove: true, error: err })\n }\n }\n\n if (uniqueItems) {\n if (type === \"array\") {\n let errorPerItem = validateUniqueItems(value, uniqueItems)\n if (errorPerItem) errors.push(...errorPerItem)\n }\n }\n\n if (maxLength || maxLength === 0) {\n let err = validateMaxLength(value, maxLength)\n if (err) errors.push(err)\n }\n\n if (minLength) {\n let err = validateMinLength(value, minLength)\n if (err) errors.push(err)\n }\n\n if (maximum || maximum === 0) {\n let err = validateMaximum(value, maximum)\n if (err) errors.push(err)\n }\n\n if (minimum || minimum === 0) {\n let err = validateMinimum(value, minimum)\n if (err) errors.push(err)\n }\n\n if (type === \"string\") {\n let err\n if (format === \"date-time\") {\n err = validateDateTime(value)\n } else if (format === \"uuid\") {\n err = validateGuid(value)\n } else {\n err = validateString(value)\n }\n if (!err) return errors\n errors.push(err)\n } else if (type === \"boolean\") {\n let err = validateBoolean(value)\n if (!err) return errors\n errors.push(err)\n } else if (type === \"number\") {\n let err = validateNumber(value)\n if (!err) return errors\n errors.push(err)\n } else if (type === \"integer\") {\n let err = validateInteger(value)\n if (!err) return errors\n errors.push(err)\n } else if (type === \"array\") {\n if (!(arrayCheck || arrayListCheck)) {\n return errors\n }\n if(value) {\n value.forEach((item, i) => {\n const errs = validateValueBySchema(item, schema.get(\"items\"), false, bypassRequiredCheck, parameterContentMediaType)\n errors.push(...errs\n .map((err) => ({ index: i, error: err })))\n })\n }\n } else if (type === \"file\") {\n let err = validateFile(value)\n if (!err) return errors\n errors.push(err)\n }\n\n return errors\n}\n\n// validation of parameters before execute\nexport const validateParam = (param, value, { isOAS3 = false, bypassRequiredCheck = false } = {}) => {\n\n let paramRequired = param.get(\"required\")\n\n let {\n schema: paramDetails,\n parameterContentMediaType\n } = getParameterSchema(param, { isOAS3 })\n\n return validateValueBySchema(value, paramDetails, paramRequired, bypassRequiredCheck, parameterContentMediaType)\n}\n\nexport const parseSearch = () => {\n let map = {}\n let search = win.location.search\n\n if(!search)\n return {}\n\n if ( search != \"\" ) {\n let params = search.substr(1).split(\"&\")\n\n for (let i in params) {\n if (!Object.prototype.hasOwnProperty.call(params, i)) {\n continue\n }\n i = params[i].split(\"=\")\n map[decodeURIComponent(i[0])] = (i[1] && decodeURIComponent(i[1])) || \"\"\n }\n }\n\n return map\n}\n\nexport const serializeSearch = (searchMap) => {\n return Object.keys(searchMap).map(k => {\n return encodeURIComponent(k) + \"=\" + encodeURIComponent(searchMap[k])\n }).join(\"&\")\n}\n\nexport const btoa = (str) => {\n let buffer\n\n if (str instanceof Buffer) {\n buffer = str\n } else {\n buffer = Buffer.from(str.toString(), \"utf-8\")\n }\n\n return buffer.toString(\"base64\")\n}\n\nexport const sorters = {\n operationsSorter: {\n alpha: (a, b) => a.get(\"path\").localeCompare(b.get(\"path\")),\n method: (a, b) => a.get(\"method\").localeCompare(b.get(\"method\"))\n },\n tagsSorter: {\n alpha: (a, b) => a.localeCompare(b)\n }\n}\n\nexport const buildFormData = (data) => {\n let formArr = []\n\n for (let name in data) {\n let val = data[name]\n if (val !== undefined && val !== \"\") {\n formArr.push([name, \"=\", encodeURIComponent(val).replace(/%20/g,\"+\")].join(\"\"))\n }\n }\n return formArr.join(\"&\")\n}\n\n// Is this really required as a helper? Perhaps. TODO: expose the system of presets.apis in docs, so we know what is supported\nexport const shallowEqualKeys = (a,b, keys) => {\n return !!find(keys, (key) => {\n return eq(a[key], b[key])\n })\n}\n\nexport function sanitizeUrl(url) {\n if(typeof url !== \"string\" || url === \"\") {\n return \"\"\n }\n\n return braintreeSanitizeUrl(url)\n}\n\nexport function requiresValidationURL(uri) {\n if (!uri || uri.indexOf(\"localhost\") >= 0 || uri.indexOf(\"127.0.0.1\") >= 0 || uri === \"none\") {\n return false\n }\n return true\n}\n\n\nexport function getAcceptControllingResponse(responses) {\n if(!Im.OrderedMap.isOrderedMap(responses)) {\n // wrong type!\n return null\n }\n\n if(!responses.size) {\n // responses is empty\n return null\n }\n\n const suitable2xxResponse = responses.find((res, k) => {\n return k.startsWith(\"2\") && Object.keys(res.get(\"content\") || {}).length > 0\n })\n\n // try to find a suitable `default` responses\n const defaultResponse = responses.get(\"default\") || Im.OrderedMap()\n const defaultResponseMediaTypes = (defaultResponse.get(\"content\") || Im.OrderedMap()).keySeq().toJS()\n const suitableDefaultResponse = defaultResponseMediaTypes.length ? defaultResponse : null\n\n return suitable2xxResponse || suitableDefaultResponse\n}\n\n// suitable for use in URL fragments\nexport const createDeepLinkPath = (str) => typeof str == \"string\" || str instanceof String ? str.trim().replace(/\\s/g, \"%20\") : \"\"\n// suitable for use in CSS classes and ids\nexport const escapeDeepLinkPath = (str) => cssEscape( createDeepLinkPath(str).replace(/%20/g, \"_\") )\n\nexport const getExtensions = (defObj) => defObj.filter((v, k) => /^x-/.test(k))\nexport const getCommonExtensions = (defObj) => defObj.filter((v, k) => /^pattern|maxLength|minLength|maximum|minimum/.test(k))\n\n// Deeply strips a specific key from an object.\n//\n// `predicate` can be used to discriminate the stripping further,\n// by preserving the key's place in the object based on its value.\nexport function deeplyStripKey(input, keyToStrip, predicate = () => true) {\n if(typeof input !== \"object\" || Array.isArray(input) || input === null || !keyToStrip) {\n return input\n }\n\n const obj = Object.assign({}, input)\n\n Object.keys(obj).forEach(k => {\n if(k === keyToStrip && predicate(obj[k], k)) {\n delete obj[k]\n return\n }\n obj[k] = deeplyStripKey(obj[k], keyToStrip, predicate)\n })\n\n return obj\n}\n\nexport function stringify(thing) {\n if (typeof thing === \"string\") {\n return thing\n }\n\n if (thing && thing.toJS) {\n thing = thing.toJS()\n }\n\n if (typeof thing === \"object\" && thing !== null) {\n try {\n return JSON.stringify(thing, null, 2)\n }\n catch (e) {\n return String(thing)\n }\n }\n\n if(thing === null || thing === undefined) {\n return \"\"\n }\n\n return thing.toString()\n}\n\nexport function numberToString(thing) {\n if(typeof thing === \"number\") {\n return thing.toString()\n }\n\n return thing\n}\n\nexport function paramToIdentifier(param, { returnAll = false, allowHashes = true } = {}) {\n if(!Im.Map.isMap(param)) {\n throw new Error(\"paramToIdentifier: received a non-Im.Map parameter as input\")\n }\n const paramName = param.get(\"name\")\n const paramIn = param.get(\"in\")\n\n let generatedIdentifiers = []\n\n // Generate identifiers in order of most to least specificity\n\n if (param && param.hashCode && paramIn && paramName && allowHashes) {\n generatedIdentifiers.push(`${paramIn}.${paramName}.hash-${param.hashCode()}`)\n }\n\n if(paramIn && paramName) {\n generatedIdentifiers.push(`${paramIn}.${paramName}`)\n }\n\n generatedIdentifiers.push(paramName)\n\n // Return the most preferred identifier, or all if requested\n\n return returnAll ? generatedIdentifiers : (generatedIdentifiers[0] || \"\")\n}\n\nexport function paramToValue(param, paramValues) {\n const allIdentifiers = paramToIdentifier(param, { returnAll: true })\n\n // Map identifiers to values in the provided value hash, filter undefined values,\n // and return the first value found\n const values = allIdentifiers\n .map(id => {\n return paramValues[id]\n })\n .filter(value => value !== undefined)\n\n return values[0]\n}\n\n// adapted from https://auth0.com/docs/flows/guides/auth-code-pkce/includes/create-code-verifier\nexport function generateCodeVerifier() {\n return b64toB64UrlEncoded(\n randomBytes(32).toString(\"base64\")\n )\n}\n\nexport function createCodeChallenge(codeVerifier) {\n return b64toB64UrlEncoded(\n shaJs(\"sha256\")\n .update(codeVerifier)\n .digest(\"base64\")\n )\n}\n\nfunction b64toB64UrlEncoded(str) {\n return str\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=/g, \"\")\n}\n\nexport const isEmptyValue = (value) => {\n if (!value) {\n return true\n }\n\n if (isImmutable(value) && value.isEmpty()) {\n return true\n }\n\n return false\n}\n","export function canJsonParse(str) {\n try {\n let testValueForJson = JSON.parse(str)\n return testValueForJson ? true : false\n } catch (e) {\n // exception: string is not valid json\n return null\n }\n}\n\nexport function getKnownSyntaxHighlighterLanguage(val) {\n // to start, only check for json. can expand as needed in future\n const isValidJson = canJsonParse(val)\n return isValidJson ? \"json\" : null\n}\n","export function isAbsoluteUrl(url) {\n return url.match(/^(?:[a-z]+:)?\\/\\//i) // Matches http://, HTTP://, https://, ftp://, //example.com,\n}\n\nexport function addProtocol(url) {\n if (!url.match(/^\\/\\//i)) return url // Checks if protocol is missing e.g. //example.com\n\n return `${window.location.protocol}${url}`\n}\n\nexport function buildBaseUrl(selectedServer, specUrl) {\n if (!selectedServer) return specUrl\n if (isAbsoluteUrl(selectedServer)) return addProtocol(selectedServer)\n\n return new URL(selectedServer, specUrl).href\n}\n\nexport function buildUrl(url, specUrl, { selectedServer=\"\" } = {}) {\n if (!url) return undefined\n if (isAbsoluteUrl(url)) return url\n\n const baseUrl = buildBaseUrl(selectedServer, specUrl)\n if (!isAbsoluteUrl(baseUrl)) {\n return new URL(url, window.location.href).href\n }\n return new URL(url, baseUrl).href\n}\n\n/**\n * Safe version of buildUrl function. `selectedServer` can contain server variables\n * which can fail the URL resolution.\n */\nexport function safeBuildUrl(url, specUrl, { selectedServer=\"\" } = {}) {\n try {\n return buildUrl(url, specUrl, { selectedServer })\n } catch {\n return undefined\n }\n}\n","function makeWindow() {\n var win = {\n location: {},\n history: {},\n open: () => {},\n close: () => {},\n File: function() {}\n }\n\n if(typeof window === \"undefined\") {\n return win\n }\n\n try {\n win = window\n var props = [\"File\", \"Blob\", \"FormData\"]\n for (var prop of props) {\n if (prop in window) {\n win[prop] = window[prop]\n }\n }\n } catch( e ) {\n console.error(e)\n }\n\n return win\n}\n\nexport default makeWindow()\n","/**\n * @prettier\n */\n\nimport Im from \"immutable\"\n\nconst swagger2SchemaKeys = Im.Set.of(\n \"type\",\n \"format\",\n \"items\",\n \"default\",\n \"maximum\",\n \"exclusiveMaximum\",\n \"minimum\",\n \"exclusiveMinimum\",\n \"maxLength\",\n \"minLength\",\n \"pattern\",\n \"maxItems\",\n \"minItems\",\n \"uniqueItems\",\n \"enum\",\n \"multipleOf\"\n)\n\n/**\n * @typedef {Object} ParameterSchemaDescriptor\n * @property {Immutable.Map} schema - the parameter schema\n * @property {string|null} parameterContentMediaType - the effective media type, for `content`-based OpenAPI 3.0 Parameters, or `null` otherwise\n */\n\n/**\n * Get the effective schema value for a parameter, or an empty Immutable.Map if\n * no suitable schema can be found.\n *\n * Supports OpenAPI 3.0 `Parameter.content` priority -- since a Parameter Object\n * cannot have both `schema` and `content`, this function ignores `schema` when\n * `content` is present.\n *\n * @param {Immutable.Map} parameter The parameter to identify a schema for\n * @param {object} config\n * @param {boolean} config.isOAS3 Whether the parameter is from an OpenAPI 2.0\n * or OpenAPI 3.0 definition\n * @return {ParameterSchemaDescriptor} Information about the parameter schema\n */\nexport default function getParameterSchema(parameter, { isOAS3 } = {}) {\n // Return empty Map if `parameter` isn't a Map\n if (!Im.Map.isMap(parameter)) {\n return {\n schema: Im.Map(),\n parameterContentMediaType: null,\n }\n }\n\n if (!isOAS3) {\n // Swagger 2.0\n if (parameter.get(\"in\") === \"body\") {\n return {\n schema: parameter.get(\"schema\", Im.Map()),\n parameterContentMediaType: null,\n }\n } else {\n return {\n schema: parameter.filter((v, k) => swagger2SchemaKeys.includes(k)),\n parameterContentMediaType: null,\n }\n }\n }\n\n // If we've reached here, the parameter is OpenAPI 3.0\n\n if (parameter.get(\"content\")) {\n const parameterContentMediaTypes = parameter\n .get(\"content\", Im.Map({}))\n .keySeq()\n\n const parameterContentMediaType = parameterContentMediaTypes.first()\n\n return {\n schema: parameter.getIn(\n [\"content\", parameterContentMediaType, \"schema\"],\n Im.Map()\n ),\n parameterContentMediaType,\n }\n }\n\n return {\n schema: parameter.get(\"schema\") ? parameter.get(\"schema\", Im.Map()): Im.Map(),\n parameterContentMediaType: null,\n }\n}\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_find_index_99e05360__[\"default\"] });","import memoize from \"lodash/memoize\"\n\n/**\n * This function is extension on top of lodash.memoize.\n * It uses all the arguments of the `fn` as the cache key instead of just the first one.\n * If resolver is provided, it determines the cache key for\n * storing the result based on the arguments provided to the memoized function.\n */\n\nconst shallowArrayEquals = (a) => (b) => {\n return Array.isArray(a) && Array.isArray(b)\n && a.length === b.length\n && a.every((val, index) => val === b[index])\n}\n\nconst list = (...args) => args\n\nclass Cache extends Map {\n delete(key) {\n const keys = Array.from(this.keys())\n const foundKey = keys.find(shallowArrayEquals(key))\n return super.delete(foundKey)\n }\n\n get(key) {\n const keys = Array.from(this.keys())\n const foundKey = keys.find(shallowArrayEquals(key))\n return super.get(foundKey)\n }\n\n has(key) {\n const keys = Array.from(this.keys())\n return keys.findIndex(shallowArrayEquals(key)) !== -1\n }\n}\n\nconst memoizeN = (fn, resolver = list) => {\n const { Cache: OriginalCache } = memoize\n memoize.Cache = Cache\n\n const memoized = memoize(fn, resolver)\n\n memoize.Cache = OriginalCache\n\n return memoized\n}\n\nexport default memoizeN\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","require('../../modules/es.object.define-property');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar defineProperty = module.exports = function defineProperty(it, key, desc) {\n return Object.defineProperty(it, key, desc);\n};\n\nif (Object.defineProperty.sham) defineProperty.sham = true;\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","module.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar isCallable = require('../internals/is-callable');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar isForced = require('../internals/is-forced');\nvar path = require('../internals/path');\nvar bind = require('../internals/function-bind-context');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\n\nvar wrapConstructor = function (NativeConstructor) {\n var Wrapper = function (a, b, c) {\n if (this instanceof Wrapper) {\n switch (arguments.length) {\n case 0: return new NativeConstructor();\n case 1: return new NativeConstructor(a);\n case 2: return new NativeConstructor(a, b);\n } return new NativeConstructor(a, b, c);\n } return apply(NativeConstructor, this, arguments);\n };\n Wrapper.prototype = NativeConstructor.prototype;\n return Wrapper;\n};\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var PROTO = options.proto;\n\n var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;\n\n var target = GLOBAL ? path : path[TARGET] || createNonEnumerableProperty(path, TARGET, {})[TARGET];\n var targetPrototype = target.prototype;\n\n var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n for (key in source) {\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contains in native\n USE_NATIVE = !FORCED && nativeSource && hasOwn(nativeSource, key);\n\n targetProperty = target[key];\n\n if (USE_NATIVE) if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(nativeSource, key);\n nativeProperty = descriptor && descriptor.value;\n } else nativeProperty = nativeSource[key];\n\n // export native or implementation\n sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n if (USE_NATIVE && typeof targetProperty == typeof sourceProperty) continue;\n\n // bind methods to global for calling from export context\n if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);\n // wrap global constructors for prevent changes in this version\n else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n // make static versions for prototype methods\n else if (PROTO && isCallable(sourceProperty)) resultProperty = uncurryThis(sourceProperty);\n // default case\n else resultProperty = sourceProperty;\n\n // add a flag to not completely full polyfills\n if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(resultProperty, 'sham', true);\n }\n\n createNonEnumerableProperty(target, key, resultProperty);\n\n if (PROTO) {\n VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n if (!hasOwn(path, VIRTUAL_PROTOTYPE)) {\n createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n }\n // export virtual prototype methods\n createNonEnumerableProperty(path[VIRTUAL_PROTOTYPE], key, sourceProperty);\n // export real prototype methods\n if (options.real && targetPrototype && (FORCED || !targetPrototype[key])) {\n createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n }\n }\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","var uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (variable) {\n return isCallable(variable) ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || this || Function('return this')();\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","var $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","var isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = true;\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = {};\n","var isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.31.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.31.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n defineProperty: defineProperty\n});\n","var parent = require('../../es/object/define-property');\n\nmodule.exports = parent;\n","/*!\n * @description Recursive object extending\n * @author Viacheslav Lotsmanov \n * @license MIT\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2013-2018 Viacheslav Lotsmanov\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nfunction isSpecificValue(val) {\n\treturn (\n\t\tval instanceof Buffer\n\t\t|| val instanceof Date\n\t\t|| val instanceof RegExp\n\t) ? true : false;\n}\n\nfunction cloneSpecificValue(val) {\n\tif (val instanceof Buffer) {\n\t\tvar x = Buffer.alloc\n\t\t\t? Buffer.alloc(val.length)\n\t\t\t: new Buffer(val.length);\n\t\tval.copy(x);\n\t\treturn x;\n\t} else if (val instanceof Date) {\n\t\treturn new Date(val.getTime());\n\t} else if (val instanceof RegExp) {\n\t\treturn new RegExp(val);\n\t} else {\n\t\tthrow new Error('Unexpected situation');\n\t}\n}\n\n/**\n * Recursive cloning array.\n */\nfunction deepCloneArray(arr) {\n\tvar clone = [];\n\tarr.forEach(function (item, index) {\n\t\tif (typeof item === 'object' && item !== null) {\n\t\t\tif (Array.isArray(item)) {\n\t\t\t\tclone[index] = deepCloneArray(item);\n\t\t\t} else if (isSpecificValue(item)) {\n\t\t\t\tclone[index] = cloneSpecificValue(item);\n\t\t\t} else {\n\t\t\t\tclone[index] = deepExtend({}, item);\n\t\t\t}\n\t\t} else {\n\t\t\tclone[index] = item;\n\t\t}\n\t});\n\treturn clone;\n}\n\nfunction safeGetProperty(object, property) {\n\treturn property === '__proto__' ? undefined : object[property];\n}\n\n/**\n * Extening object that entered in first argument.\n *\n * Returns extended object or false if have no target object or incorrect type.\n *\n * If you wish to clone source object (without modify it), just use empty new\n * object as first argument, like this:\n * deepExtend({}, yourObj_1, [yourObj_N]);\n */\nvar deepExtend = module.exports = function (/*obj_1, [obj_2], [obj_N]*/) {\n\tif (arguments.length < 1 || typeof arguments[0] !== 'object') {\n\t\treturn false;\n\t}\n\n\tif (arguments.length < 2) {\n\t\treturn arguments[0];\n\t}\n\n\tvar target = arguments[0];\n\n\t// convert arguments to array and cut off target object\n\tvar args = Array.prototype.slice.call(arguments, 1);\n\n\tvar val, src, clone;\n\n\targs.forEach(function (obj) {\n\t\t// skip argument if isn't an object, is null, or is an array\n\t\tif (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {\n\t\t\treturn;\n\t\t}\n\n\t\tObject.keys(obj).forEach(function (key) {\n\t\t\tsrc = safeGetProperty(target, key); // source value\n\t\t\tval = safeGetProperty(obj, key); // new value\n\n\t\t\t// recursion prevention\n\t\t\tif (val === target) {\n\t\t\t\treturn;\n\n\t\t\t/**\n\t\t\t * if new value isn't object then just overwrite by new value\n\t\t\t * instead of extending.\n\t\t\t */\n\t\t\t} else if (typeof val !== 'object' || val === null) {\n\t\t\t\ttarget[key] = val;\n\t\t\t\treturn;\n\n\t\t\t// just clone arrays (and recursive clone objects inside)\n\t\t\t} else if (Array.isArray(val)) {\n\t\t\t\ttarget[key] = deepCloneArray(val);\n\t\t\t\treturn;\n\n\t\t\t// custom cloning and overwrite for specific objects\n\t\t\t} else if (isSpecificValue(val)) {\n\t\t\t\ttarget[key] = cloneSpecificValue(val);\n\t\t\t\treturn;\n\n\t\t\t// overwrite by new value if source isn't object or array\n\t\t\t} else if (typeof src !== 'object' || src === null || Array.isArray(src)) {\n\t\t\t\ttarget[key] = deepExtend({}, val);\n\t\t\t\treturn;\n\n\t\t\t// source value and new value is objects both, extending...\n\t\t\t} else {\n\t\t\t\ttarget[key] = deepExtend(src, val);\n\t\t\t\treturn;\n\t\t\t}\n\t\t});\n\t});\n\n\treturn target;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","\nvar XML_CHARACTER_MAP = {\n '&': '&',\n '\"': '"',\n \"'\": ''',\n '<': '<',\n '>': '>'\n};\n\nfunction escapeForXML(string) {\n return string && string.replace\n ? string.replace(/([&\"<>'])/g, function(str, item) {\n return XML_CHARACTER_MAP[item];\n })\n : string;\n}\n\nmodule.exports = escapeForXML;\n","var escapeForXML = require('./escapeForXML');\nvar Stream = require('stream').Stream;\n\nvar DEFAULT_INDENT = ' ';\n\nfunction xml(input, options) {\n\n if (typeof options !== 'object') {\n options = {\n indent: options\n };\n }\n\n var stream = options.stream ? new Stream() : null,\n output = \"\",\n interrupted = false,\n indent = !options.indent ? ''\n : options.indent === true ? DEFAULT_INDENT\n : options.indent,\n instant = true;\n\n\n function delay (func) {\n if (!instant) {\n func();\n } else {\n process.nextTick(func);\n }\n }\n\n function append (interrupt, out) {\n if (out !== undefined) {\n output += out;\n }\n if (interrupt && !interrupted) {\n stream = stream || new Stream();\n interrupted = true;\n }\n if (interrupt && interrupted) {\n var data = output;\n delay(function () { stream.emit('data', data) });\n output = \"\";\n }\n }\n\n function add (value, last) {\n format(append, resolve(value, indent, indent ? 1 : 0), last);\n }\n\n function end() {\n if (stream) {\n var data = output;\n delay(function () {\n stream.emit('data', data);\n stream.emit('end');\n stream.readable = false;\n stream.emit('close');\n });\n }\n }\n\n function addXmlDeclaration(declaration) {\n var encoding = declaration.encoding || 'UTF-8',\n attr = { version: '1.0', encoding: encoding };\n\n if (declaration.standalone) {\n attr.standalone = declaration.standalone\n }\n\n add({'?xml': { _attr: attr } });\n output = output.replace('/>', '?>');\n }\n\n // disable delay delayed\n delay(function () { instant = false });\n\n if (options.declaration) {\n addXmlDeclaration(options.declaration);\n }\n\n if (input && input.forEach) {\n input.forEach(function (value, i) {\n var last;\n if (i + 1 === input.length)\n last = end;\n add(value, last);\n });\n } else {\n add(input, end);\n }\n\n if (stream) {\n stream.readable = true;\n return stream;\n }\n return output;\n}\n\nfunction element (/*input, …*/) {\n var input = Array.prototype.slice.call(arguments),\n self = {\n _elem: resolve(input)\n };\n\n self.push = function (input) {\n if (!this.append) {\n throw new Error(\"not assigned to a parent!\");\n }\n var that = this;\n var indent = this._elem.indent;\n format(this.append, resolve(\n input, indent, this._elem.icount + (indent ? 1 : 0)),\n function () { that.append(true) });\n };\n\n self.close = function (input) {\n if (input !== undefined) {\n this.push(input);\n }\n if (this.end) {\n this.end();\n }\n };\n\n return self;\n}\n\nfunction create_indent(character, count) {\n return (new Array(count || 0).join(character || ''))\n}\n\nfunction resolve(data, indent, indent_count) {\n indent_count = indent_count || 0;\n var indent_spaces = create_indent(indent, indent_count);\n var name;\n var values = data;\n var interrupt = false;\n\n if (typeof data === 'object') {\n var keys = Object.keys(data);\n name = keys[0];\n values = data[name];\n\n if (values && values._elem) {\n values._elem.name = name;\n values._elem.icount = indent_count;\n values._elem.indent = indent;\n values._elem.indents = indent_spaces;\n values._elem.interrupt = values;\n return values._elem;\n }\n }\n\n var attributes = [],\n content = [];\n\n var isStringContent;\n\n function get_attributes(obj){\n var keys = Object.keys(obj);\n keys.forEach(function(key){\n attributes.push(attribute(key, obj[key]));\n });\n }\n\n switch(typeof values) {\n case 'object':\n if (values === null) break;\n\n if (values._attr) {\n get_attributes(values._attr);\n }\n\n if (values._cdata) {\n content.push(\n ('/g, ']]]]>') + ']]>'\n );\n }\n\n if (values.forEach) {\n isStringContent = false;\n content.push('');\n values.forEach(function(value) {\n if (typeof value == 'object') {\n var _name = Object.keys(value)[0];\n\n if (_name == '_attr') {\n get_attributes(value._attr);\n } else {\n content.push(resolve(\n value, indent, indent_count + 1));\n }\n } else {\n //string\n content.pop();\n isStringContent=true;\n content.push(escapeForXML(value));\n }\n\n });\n if (!isStringContent) {\n content.push('');\n }\n }\n break;\n\n default:\n //string\n content.push(escapeForXML(values));\n\n }\n\n return {\n name: name,\n interrupt: interrupt,\n attributes: attributes,\n content: content,\n icount: indent_count,\n indents: indent_spaces,\n indent: indent\n };\n}\n\nfunction format(append, elem, end) {\n\n if (typeof elem != 'object') {\n return append(false, elem);\n }\n\n var len = elem.interrupt ? 1 : elem.content.length;\n\n function proceed () {\n while (elem.content.length) {\n var value = elem.content.shift();\n\n if (value === undefined) continue;\n if (interrupt(value)) return;\n\n format(append, value);\n }\n\n append(false, (len > 1 ? elem.indents : '')\n + (elem.name ? '' : '')\n + (elem.indent && !end ? '\\n' : ''));\n\n if (end) {\n end();\n }\n }\n\n function interrupt(value) {\n if (value.interrupt) {\n value.interrupt.append = append;\n value.interrupt.end = proceed;\n value.interrupt = false;\n append(true);\n return true;\n }\n return false;\n }\n\n append(false, elem.indents\n + (elem.name ? '<' + elem.name : '')\n + (elem.attributes.length ? ' ' + elem.attributes.join(' ') : '')\n + (len ? (elem.name ? '>' : '') : (elem.name ? '/>' : ''))\n + (elem.indent && len > 1 ? '\\n' : ''));\n\n if (!len) {\n return append(false, elem.indent ? '\\n' : '');\n }\n\n if (!interrupt(elem)) {\n proceed();\n }\n}\n\nfunction attribute(key, value) {\n return key + '=' + '\"' + escapeForXML(value) + '\"';\n}\n\nmodule.exports = xml;\nmodule.exports.element = module.exports.Element = element;\n","var map = {\n\t\"./all.js\": 5308,\n\t\"./auth/actions.js\": 5812,\n\t\"./auth/configs-extensions/wrap-actions.js\": 3779,\n\t\"./auth/index.js\": 3705,\n\t\"./auth/reducers.js\": 3962,\n\t\"./auth/selectors.js\": 35,\n\t\"./auth/spec-extensions/wrap-actions.js\": 489,\n\t\"./auth/wrap-actions.js\": 2849,\n\t\"./configs/actions.js\": 714,\n\t\"./configs/helpers.js\": 2256,\n\t\"./configs/index.js\": 6709,\n\t\"./configs/reducers.js\": 7743,\n\t\"./configs/selectors.js\": 9018,\n\t\"./configs/spec-actions.js\": 2698,\n\t\"./deep-linking/helpers.js\": 1970,\n\t\"./deep-linking/index.js\": 4980,\n\t\"./deep-linking/layout.js\": 5858,\n\t\"./deep-linking/operation-tag-wrapper.jsx\": 4584,\n\t\"./deep-linking/operation-wrapper.jsx\": 877,\n\t\"./download-url.js\": 8011,\n\t\"./err/actions.js\": 4966,\n\t\"./err/error-transformers/hook.js\": 6808,\n\t\"./err/error-transformers/transformers/not-of-type.js\": 2392,\n\t\"./err/error-transformers/transformers/parameter-oneof.js\": 1835,\n\t\"./err/index.js\": 7793,\n\t\"./err/reducers.js\": 3527,\n\t\"./err/selectors.js\": 7667,\n\t\"./filter/index.js\": 9978,\n\t\"./filter/opsFilter.js\": 4309,\n\t\"./json-schema-2020-12/components/Accordion/Accordion.jsx\": 7349,\n\t\"./json-schema-2020-12/components/ExpandDeepButton/ExpandDeepButton.jsx\": 6867,\n\t\"./json-schema-2020-12/components/JSONSchema/JSONSchema.jsx\": 2675,\n\t\"./json-schema-2020-12/components/icons/ChevronRight.jsx\": 2260,\n\t\"./json-schema-2020-12/components/keywords/$anchor.jsx\": 4922,\n\t\"./json-schema-2020-12/components/keywords/$comment.jsx\": 4685,\n\t\"./json-schema-2020-12/components/keywords/$defs.jsx\": 6418,\n\t\"./json-schema-2020-12/components/keywords/$dynamicAnchor.jsx\": 1338,\n\t\"./json-schema-2020-12/components/keywords/$dynamicRef.jsx\": 7655,\n\t\"./json-schema-2020-12/components/keywords/$id.jsx\": 3460,\n\t\"./json-schema-2020-12/components/keywords/$ref.jsx\": 2348,\n\t\"./json-schema-2020-12/components/keywords/$schema.jsx\": 9359,\n\t\"./json-schema-2020-12/components/keywords/$vocabulary/$vocabulary.jsx\": 7568,\n\t\"./json-schema-2020-12/components/keywords/AdditionalProperties.jsx\": 5253,\n\t\"./json-schema-2020-12/components/keywords/AllOf.jsx\": 6457,\n\t\"./json-schema-2020-12/components/keywords/AnyOf.jsx\": 8776,\n\t\"./json-schema-2020-12/components/keywords/Const.jsx\": 7308,\n\t\"./json-schema-2020-12/components/keywords/Constraint/Constraint.jsx\": 9956,\n\t\"./json-schema-2020-12/components/keywords/Contains.jsx\": 8993,\n\t\"./json-schema-2020-12/components/keywords/ContentSchema.jsx\": 3484,\n\t\"./json-schema-2020-12/components/keywords/Default.jsx\": 5148,\n\t\"./json-schema-2020-12/components/keywords/DependentRequired/DependentRequired.jsx\": 4539,\n\t\"./json-schema-2020-12/components/keywords/DependentSchemas.jsx\": 6076,\n\t\"./json-schema-2020-12/components/keywords/Deprecated.jsx\": 6661,\n\t\"./json-schema-2020-12/components/keywords/Description/Description.jsx\": 9446,\n\t\"./json-schema-2020-12/components/keywords/Else.jsx\": 7207,\n\t\"./json-schema-2020-12/components/keywords/Enum/Enum.jsx\": 1805,\n\t\"./json-schema-2020-12/components/keywords/If.jsx\": 487,\n\t\"./json-schema-2020-12/components/keywords/Items.jsx\": 9206,\n\t\"./json-schema-2020-12/components/keywords/Not.jsx\": 5174,\n\t\"./json-schema-2020-12/components/keywords/OneOf.jsx\": 3834,\n\t\"./json-schema-2020-12/components/keywords/PatternProperties/PatternProperties.jsx\": 6746,\n\t\"./json-schema-2020-12/components/keywords/PrefixItems.jsx\": 3971,\n\t\"./json-schema-2020-12/components/keywords/Properties/Properties.jsx\": 5472,\n\t\"./json-schema-2020-12/components/keywords/PropertyNames.jsx\": 2338,\n\t\"./json-schema-2020-12/components/keywords/ReadOnly.jsx\": 6456,\n\t\"./json-schema-2020-12/components/keywords/Then.jsx\": 7401,\n\t\"./json-schema-2020-12/components/keywords/Title/Title.jsx\": 8137,\n\t\"./json-schema-2020-12/components/keywords/Type.jsx\": 2285,\n\t\"./json-schema-2020-12/components/keywords/UnevaluatedItems.jsx\": 5828,\n\t\"./json-schema-2020-12/components/keywords/UnevaluatedProperties.jsx\": 6907,\n\t\"./json-schema-2020-12/components/keywords/WriteOnly.jsx\": 5789,\n\t\"./json-schema-2020-12/context.js\": 9006,\n\t\"./json-schema-2020-12/fn.js\": 4121,\n\t\"./json-schema-2020-12/hoc.jsx\": 5077,\n\t\"./json-schema-2020-12/hooks.js\": 2603,\n\t\"./json-schema-2020-12/index.js\": 7139,\n\t\"./json-schema-2020-12/prop-types.js\": 6648,\n\t\"./json-schema-2020-12/samples-extensions/fn/api/encoderAPI.js\": 9507,\n\t\"./json-schema-2020-12/samples-extensions/fn/api/formatAPI.js\": 2906,\n\t\"./json-schema-2020-12/samples-extensions/fn/api/mediaTypeAPI.js\": 537,\n\t\"./json-schema-2020-12/samples-extensions/fn/class/EncoderRegistry.js\": 674,\n\t\"./json-schema-2020-12/samples-extensions/fn/class/MediaTypeRegistry.js\": 3782,\n\t\"./json-schema-2020-12/samples-extensions/fn/class/Registry.js\": 4215,\n\t\"./json-schema-2020-12/samples-extensions/fn/core/constants.js\": 8338,\n\t\"./json-schema-2020-12/samples-extensions/fn/core/example.js\": 3783,\n\t\"./json-schema-2020-12/samples-extensions/fn/core/merge.js\": 7078,\n\t\"./json-schema-2020-12/samples-extensions/fn/core/predicates.js\": 3084,\n\t\"./json-schema-2020-12/samples-extensions/fn/core/random.js\": 5202,\n\t\"./json-schema-2020-12/samples-extensions/fn/core/type.js\": 6276,\n\t\"./json-schema-2020-12/samples-extensions/fn/core/utils.js\": 9346,\n\t\"./json-schema-2020-12/samples-extensions/fn/encoders/7bit.js\": 1433,\n\t\"./json-schema-2020-12/samples-extensions/fn/encoders/8bit.js\": 8509,\n\t\"./json-schema-2020-12/samples-extensions/fn/encoders/base16.js\": 5709,\n\t\"./json-schema-2020-12/samples-extensions/fn/encoders/base32.js\": 4180,\n\t\"./json-schema-2020-12/samples-extensions/fn/encoders/base64.js\": 1967,\n\t\"./json-schema-2020-12/samples-extensions/fn/encoders/binary.js\": 4366,\n\t\"./json-schema-2020-12/samples-extensions/fn/encoders/quoted-printable.js\": 5037,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/date-time.js\": 4045,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/date.js\": 1456,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/double.js\": 560,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/duration.js\": 4299,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/email.js\": 3981,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/float.js\": 1890,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/hostname.js\": 9375,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/idn-email.js\": 4518,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/idn-hostname.js\": 273,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/int32.js\": 7864,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/int64.js\": 1726,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/ipv4.js\": 8793,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/ipv6.js\": 8269,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/iri-reference.js\": 5693,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/iri.js\": 3080,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/json-pointer.js\": 7856,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/media-types/application.js\": 5652,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/media-types/audio.js\": 4342,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/media-types/image.js\": 6724,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/media-types/text.js\": 5378,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/media-types/video.js\": 2974,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/password.js\": 3393,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/regex.js\": 4335,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/relative-json-pointer.js\": 375,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/time.js\": 5243,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/uri-reference.js\": 4692,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/uri-template.js\": 3829,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/uri.js\": 2978,\n\t\"./json-schema-2020-12/samples-extensions/fn/generators/uuid.js\": 8859,\n\t\"./json-schema-2020-12/samples-extensions/fn/index.js\": 8591,\n\t\"./json-schema-2020-12/samples-extensions/fn/main.js\": 4277,\n\t\"./json-schema-2020-12/samples-extensions/fn/types/array.js\": 8262,\n\t\"./json-schema-2020-12/samples-extensions/fn/types/boolean.js\": 4108,\n\t\"./json-schema-2020-12/samples-extensions/fn/types/index.js\": 3273,\n\t\"./json-schema-2020-12/samples-extensions/fn/types/integer.js\": 8864,\n\t\"./json-schema-2020-12/samples-extensions/fn/types/null.js\": 853,\n\t\"./json-schema-2020-12/samples-extensions/fn/types/number.js\": 7742,\n\t\"./json-schema-2020-12/samples-extensions/fn/types/object.js\": 6852,\n\t\"./json-schema-2020-12/samples-extensions/fn/types/string.js\": 4522,\n\t\"./layout/actions.js\": 5474,\n\t\"./layout/index.js\": 6821,\n\t\"./layout/reducers.js\": 5672,\n\t\"./layout/selectors.js\": 4400,\n\t\"./layout/spec-extensions/wrap-selector.js\": 8989,\n\t\"./logs/index.js\": 9150,\n\t\"./oas3/actions.js\": 7002,\n\t\"./oas3/auth-extensions/wrap-selectors.js\": 3723,\n\t\"./oas3/components/callbacks.jsx\": 3427,\n\t\"./oas3/components/http-auth.jsx\": 6775,\n\t\"./oas3/components/index.js\": 6467,\n\t\"./oas3/components/operation-link.jsx\": 5757,\n\t\"./oas3/components/operation-servers.jsx\": 6796,\n\t\"./oas3/components/request-body-editor.jsx\": 5327,\n\t\"./oas3/components/request-body.jsx\": 2458,\n\t\"./oas3/components/servers-container.jsx\": 9928,\n\t\"./oas3/components/servers.jsx\": 6617,\n\t\"./oas3/helpers.jsx\": 7779,\n\t\"./oas3/index.js\": 7451,\n\t\"./oas3/reducers.js\": 2109,\n\t\"./oas3/selectors.js\": 5065,\n\t\"./oas3/spec-extensions/selectors.js\": 1741,\n\t\"./oas3/spec-extensions/wrap-selectors.js\": 2044,\n\t\"./oas3/wrap-components/auth-item.jsx\": 356,\n\t\"./oas3/wrap-components/index.js\": 7761,\n\t\"./oas3/wrap-components/json-schema-string.jsx\": 287,\n\t\"./oas3/wrap-components/markdown.jsx\": 2460,\n\t\"./oas3/wrap-components/model.jsx\": 3499,\n\t\"./oas3/wrap-components/online-validator-badge.js\": 58,\n\t\"./oas3/wrap-components/version-stamp.jsx\": 9487,\n\t\"./oas31/after-load.js\": 7754,\n\t\"./oas31/components/contact.jsx\": 9503,\n\t\"./oas31/components/info.jsx\": 6133,\n\t\"./oas31/components/json-schema-dialect.jsx\": 2562,\n\t\"./oas31/components/license.jsx\": 1876,\n\t\"./oas31/components/model/model.jsx\": 2718,\n\t\"./oas31/components/models/models.jsx\": 263,\n\t\"./oas31/components/version-pragma-filter.jsx\": 3429,\n\t\"./oas31/components/webhooks.jsx\": 9508,\n\t\"./oas31/fn.js\": 4380,\n\t\"./oas31/index.js\": 9806,\n\t\"./oas31/json-schema-2020-12-extensions/components/keywords/Description.jsx\": 5989,\n\t\"./oas31/json-schema-2020-12-extensions/components/keywords/Discriminator/Discriminator.jsx\": 9525,\n\t\"./oas31/json-schema-2020-12-extensions/components/keywords/Discriminator/DiscriminatorMapping.jsx\": 7749,\n\t\"./oas31/json-schema-2020-12-extensions/components/keywords/Example.jsx\": 9450,\n\t\"./oas31/json-schema-2020-12-extensions/components/keywords/ExternalDocs.jsx\": 5324,\n\t\"./oas31/json-schema-2020-12-extensions/components/keywords/Properties.jsx\": 9023,\n\t\"./oas31/json-schema-2020-12-extensions/components/keywords/Xml.jsx\": 3995,\n\t\"./oas31/json-schema-2020-12-extensions/fn.js\": 5800,\n\t\"./oas31/json-schema-2020-12-extensions/wrap-components/keywords/Default.jsx\": 4951,\n\t\"./oas31/json-schema-2020-12-extensions/wrap-components/keywords/Description.jsx\": 809,\n\t\"./oas31/json-schema-2020-12-extensions/wrap-components/keywords/Properties.jsx\": 7536,\n\t\"./oas31/selectors.js\": 4280,\n\t\"./oas31/spec-extensions/selectors.js\": 9305,\n\t\"./oas31/spec-extensions/wrap-selectors.js\": 2884,\n\t\"./oas31/wrap-components/contact.jsx\": 7423,\n\t\"./oas31/wrap-components/info.jsx\": 284,\n\t\"./oas31/wrap-components/license.jsx\": 6608,\n\t\"./oas31/wrap-components/model.jsx\": 7042,\n\t\"./oas31/wrap-components/models.jsx\": 2914,\n\t\"./oas31/wrap-components/version-pragma-filter.jsx\": 1434,\n\t\"./oas31/wrap-components/version-stamp.jsx\": 1122,\n\t\"./on-complete/index.js\": 8560,\n\t\"./request-snippets/fn.js\": 4624,\n\t\"./request-snippets/index.js\": 6575,\n\t\"./request-snippets/request-snippets.jsx\": 4206,\n\t\"./request-snippets/selectors.js\": 4669,\n\t\"./safe-render/components/error-boundary.jsx\": 6195,\n\t\"./safe-render/components/fallback.jsx\": 9403,\n\t\"./safe-render/fn.jsx\": 6189,\n\t\"./safe-render/index.js\": 8102,\n\t\"./samples/fn/get-json-sample-schema.js\": 2846,\n\t\"./samples/fn/get-sample-schema.js\": 6132,\n\t\"./samples/fn/get-xml-sample-schema.js\": 1169,\n\t\"./samples/fn/get-yaml-sample-schema.js\": 9431,\n\t\"./samples/fn/index.js\": 9812,\n\t\"./samples/index.js\": 8883,\n\t\"./spec/actions.js\": 7612,\n\t\"./spec/index.js\": 7038,\n\t\"./spec/reducers.js\": 32,\n\t\"./spec/selectors.js\": 3881,\n\t\"./spec/wrap-actions.js\": 7508,\n\t\"./swagger-js/configs-wrap-actions.js\": 4852,\n\t\"./swagger-js/index.js\": 9430,\n\t\"./util/index.js\": 8525,\n\t\"./view/fn.js\": 8347,\n\t\"./view/index.js\": 3420,\n\t\"./view/root-injects.jsx\": 3934,\n\t\"core/plugins/all.js\": 5308,\n\t\"core/plugins/auth/actions.js\": 5812,\n\t\"core/plugins/auth/configs-extensions/wrap-actions.js\": 3779,\n\t\"core/plugins/auth/index.js\": 3705,\n\t\"core/plugins/auth/reducers.js\": 3962,\n\t\"core/plugins/auth/selectors.js\": 35,\n\t\"core/plugins/auth/spec-extensions/wrap-actions.js\": 489,\n\t\"core/plugins/auth/wrap-actions.js\": 2849,\n\t\"core/plugins/configs/actions.js\": 714,\n\t\"core/plugins/configs/helpers.js\": 2256,\n\t\"core/plugins/configs/index.js\": 6709,\n\t\"core/plugins/configs/reducers.js\": 7743,\n\t\"core/plugins/configs/selectors.js\": 9018,\n\t\"core/plugins/configs/spec-actions.js\": 2698,\n\t\"core/plugins/deep-linking/helpers.js\": 1970,\n\t\"core/plugins/deep-linking/index.js\": 4980,\n\t\"core/plugins/deep-linking/layout.js\": 5858,\n\t\"core/plugins/deep-linking/operation-tag-wrapper.jsx\": 4584,\n\t\"core/plugins/deep-linking/operation-wrapper.jsx\": 877,\n\t\"core/plugins/download-url.js\": 8011,\n\t\"core/plugins/err/actions.js\": 4966,\n\t\"core/plugins/err/error-transformers/hook.js\": 6808,\n\t\"core/plugins/err/error-transformers/transformers/not-of-type.js\": 2392,\n\t\"core/plugins/err/error-transformers/transformers/parameter-oneof.js\": 1835,\n\t\"core/plugins/err/index.js\": 7793,\n\t\"core/plugins/err/reducers.js\": 3527,\n\t\"core/plugins/err/selectors.js\": 7667,\n\t\"core/plugins/filter/index.js\": 9978,\n\t\"core/plugins/filter/opsFilter.js\": 4309,\n\t\"core/plugins/json-schema-2020-12/components/Accordion/Accordion.jsx\": 7349,\n\t\"core/plugins/json-schema-2020-12/components/ExpandDeepButton/ExpandDeepButton.jsx\": 6867,\n\t\"core/plugins/json-schema-2020-12/components/JSONSchema/JSONSchema.jsx\": 2675,\n\t\"core/plugins/json-schema-2020-12/components/icons/ChevronRight.jsx\": 2260,\n\t\"core/plugins/json-schema-2020-12/components/keywords/$anchor.jsx\": 4922,\n\t\"core/plugins/json-schema-2020-12/components/keywords/$comment.jsx\": 4685,\n\t\"core/plugins/json-schema-2020-12/components/keywords/$defs.jsx\": 6418,\n\t\"core/plugins/json-schema-2020-12/components/keywords/$dynamicAnchor.jsx\": 1338,\n\t\"core/plugins/json-schema-2020-12/components/keywords/$dynamicRef.jsx\": 7655,\n\t\"core/plugins/json-schema-2020-12/components/keywords/$id.jsx\": 3460,\n\t\"core/plugins/json-schema-2020-12/components/keywords/$ref.jsx\": 2348,\n\t\"core/plugins/json-schema-2020-12/components/keywords/$schema.jsx\": 9359,\n\t\"core/plugins/json-schema-2020-12/components/keywords/$vocabulary/$vocabulary.jsx\": 7568,\n\t\"core/plugins/json-schema-2020-12/components/keywords/AdditionalProperties.jsx\": 5253,\n\t\"core/plugins/json-schema-2020-12/components/keywords/AllOf.jsx\": 6457,\n\t\"core/plugins/json-schema-2020-12/components/keywords/AnyOf.jsx\": 8776,\n\t\"core/plugins/json-schema-2020-12/components/keywords/Const.jsx\": 7308,\n\t\"core/plugins/json-schema-2020-12/components/keywords/Constraint/Constraint.jsx\": 9956,\n\t\"core/plugins/json-schema-2020-12/components/keywords/Contains.jsx\": 8993,\n\t\"core/plugins/json-schema-2020-12/components/keywords/ContentSchema.jsx\": 3484,\n\t\"core/plugins/json-schema-2020-12/components/keywords/Default.jsx\": 5148,\n\t\"core/plugins/json-schema-2020-12/components/keywords/DependentRequired/DependentRequired.jsx\": 4539,\n\t\"core/plugins/json-schema-2020-12/components/keywords/DependentSchemas.jsx\": 6076,\n\t\"core/plugins/json-schema-2020-12/components/keywords/Deprecated.jsx\": 6661,\n\t\"core/plugins/json-schema-2020-12/components/keywords/Description/Description.jsx\": 9446,\n\t\"core/plugins/json-schema-2020-12/components/keywords/Else.jsx\": 7207,\n\t\"core/plugins/json-schema-2020-12/components/keywords/Enum/Enum.jsx\": 1805,\n\t\"core/plugins/json-schema-2020-12/components/keywords/If.jsx\": 487,\n\t\"core/plugins/json-schema-2020-12/components/keywords/Items.jsx\": 9206,\n\t\"core/plugins/json-schema-2020-12/components/keywords/Not.jsx\": 5174,\n\t\"core/plugins/json-schema-2020-12/components/keywords/OneOf.jsx\": 3834,\n\t\"core/plugins/json-schema-2020-12/components/keywords/PatternProperties/PatternProperties.jsx\": 6746,\n\t\"core/plugins/json-schema-2020-12/components/keywords/PrefixItems.jsx\": 3971,\n\t\"core/plugins/json-schema-2020-12/components/keywords/Properties/Properties.jsx\": 5472,\n\t\"core/plugins/json-schema-2020-12/components/keywords/PropertyNames.jsx\": 2338,\n\t\"core/plugins/json-schema-2020-12/components/keywords/ReadOnly.jsx\": 6456,\n\t\"core/plugins/json-schema-2020-12/components/keywords/Then.jsx\": 7401,\n\t\"core/plugins/json-schema-2020-12/components/keywords/Title/Title.jsx\": 8137,\n\t\"core/plugins/json-schema-2020-12/components/keywords/Type.jsx\": 2285,\n\t\"core/plugins/json-schema-2020-12/components/keywords/UnevaluatedItems.jsx\": 5828,\n\t\"core/plugins/json-schema-2020-12/components/keywords/UnevaluatedProperties.jsx\": 6907,\n\t\"core/plugins/json-schema-2020-12/components/keywords/WriteOnly.jsx\": 5789,\n\t\"core/plugins/json-schema-2020-12/context.js\": 9006,\n\t\"core/plugins/json-schema-2020-12/fn.js\": 4121,\n\t\"core/plugins/json-schema-2020-12/hoc.jsx\": 5077,\n\t\"core/plugins/json-schema-2020-12/hooks.js\": 2603,\n\t\"core/plugins/json-schema-2020-12/index.js\": 7139,\n\t\"core/plugins/json-schema-2020-12/prop-types.js\": 6648,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/api/encoderAPI.js\": 9507,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/api/formatAPI.js\": 2906,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/api/mediaTypeAPI.js\": 537,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/class/EncoderRegistry.js\": 674,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/class/MediaTypeRegistry.js\": 3782,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/class/Registry.js\": 4215,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/core/constants.js\": 8338,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/core/example.js\": 3783,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/core/merge.js\": 7078,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/core/predicates.js\": 3084,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/core/random.js\": 5202,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/core/type.js\": 6276,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/core/utils.js\": 9346,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/encoders/7bit.js\": 1433,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/encoders/8bit.js\": 8509,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/encoders/base16.js\": 5709,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/encoders/base32.js\": 4180,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/encoders/base64.js\": 1967,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/encoders/binary.js\": 4366,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/encoders/quoted-printable.js\": 5037,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/date-time.js\": 4045,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/date.js\": 1456,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/double.js\": 560,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/duration.js\": 4299,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/email.js\": 3981,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/float.js\": 1890,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/hostname.js\": 9375,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/idn-email.js\": 4518,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/idn-hostname.js\": 273,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/int32.js\": 7864,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/int64.js\": 1726,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/ipv4.js\": 8793,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/ipv6.js\": 8269,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/iri-reference.js\": 5693,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/iri.js\": 3080,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/json-pointer.js\": 7856,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/media-types/application.js\": 5652,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/media-types/audio.js\": 4342,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/media-types/image.js\": 6724,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/media-types/text.js\": 5378,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/media-types/video.js\": 2974,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/password.js\": 3393,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/regex.js\": 4335,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/relative-json-pointer.js\": 375,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/time.js\": 5243,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/uri-reference.js\": 4692,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/uri-template.js\": 3829,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/uri.js\": 2978,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/generators/uuid.js\": 8859,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/index.js\": 8591,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/main.js\": 4277,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/types/array.js\": 8262,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/types/boolean.js\": 4108,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/types/index.js\": 3273,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/types/integer.js\": 8864,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/types/null.js\": 853,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/types/number.js\": 7742,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/types/object.js\": 6852,\n\t\"core/plugins/json-schema-2020-12/samples-extensions/fn/types/string.js\": 4522,\n\t\"core/plugins/layout/actions.js\": 5474,\n\t\"core/plugins/layout/index.js\": 6821,\n\t\"core/plugins/layout/reducers.js\": 5672,\n\t\"core/plugins/layout/selectors.js\": 4400,\n\t\"core/plugins/layout/spec-extensions/wrap-selector.js\": 8989,\n\t\"core/plugins/logs/index.js\": 9150,\n\t\"core/plugins/oas3/actions.js\": 7002,\n\t\"core/plugins/oas3/auth-extensions/wrap-selectors.js\": 3723,\n\t\"core/plugins/oas3/components/callbacks.jsx\": 3427,\n\t\"core/plugins/oas3/components/http-auth.jsx\": 6775,\n\t\"core/plugins/oas3/components/index.js\": 6467,\n\t\"core/plugins/oas3/components/operation-link.jsx\": 5757,\n\t\"core/plugins/oas3/components/operation-servers.jsx\": 6796,\n\t\"core/plugins/oas3/components/request-body-editor.jsx\": 5327,\n\t\"core/plugins/oas3/components/request-body.jsx\": 2458,\n\t\"core/plugins/oas3/components/servers-container.jsx\": 9928,\n\t\"core/plugins/oas3/components/servers.jsx\": 6617,\n\t\"core/plugins/oas3/helpers.jsx\": 7779,\n\t\"core/plugins/oas3/index.js\": 7451,\n\t\"core/plugins/oas3/reducers.js\": 2109,\n\t\"core/plugins/oas3/selectors.js\": 5065,\n\t\"core/plugins/oas3/spec-extensions/selectors.js\": 1741,\n\t\"core/plugins/oas3/spec-extensions/wrap-selectors.js\": 2044,\n\t\"core/plugins/oas3/wrap-components/auth-item.jsx\": 356,\n\t\"core/plugins/oas3/wrap-components/index.js\": 7761,\n\t\"core/plugins/oas3/wrap-components/json-schema-string.jsx\": 287,\n\t\"core/plugins/oas3/wrap-components/markdown.jsx\": 2460,\n\t\"core/plugins/oas3/wrap-components/model.jsx\": 3499,\n\t\"core/plugins/oas3/wrap-components/online-validator-badge.js\": 58,\n\t\"core/plugins/oas3/wrap-components/version-stamp.jsx\": 9487,\n\t\"core/plugins/oas31/after-load.js\": 7754,\n\t\"core/plugins/oas31/components/contact.jsx\": 9503,\n\t\"core/plugins/oas31/components/info.jsx\": 6133,\n\t\"core/plugins/oas31/components/json-schema-dialect.jsx\": 2562,\n\t\"core/plugins/oas31/components/license.jsx\": 1876,\n\t\"core/plugins/oas31/components/model/model.jsx\": 2718,\n\t\"core/plugins/oas31/components/models/models.jsx\": 263,\n\t\"core/plugins/oas31/components/version-pragma-filter.jsx\": 3429,\n\t\"core/plugins/oas31/components/webhooks.jsx\": 9508,\n\t\"core/plugins/oas31/fn.js\": 4380,\n\t\"core/plugins/oas31/index.js\": 9806,\n\t\"core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Description.jsx\": 5989,\n\t\"core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Discriminator/Discriminator.jsx\": 9525,\n\t\"core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Discriminator/DiscriminatorMapping.jsx\": 7749,\n\t\"core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Example.jsx\": 9450,\n\t\"core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/ExternalDocs.jsx\": 5324,\n\t\"core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Properties.jsx\": 9023,\n\t\"core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Xml.jsx\": 3995,\n\t\"core/plugins/oas31/json-schema-2020-12-extensions/fn.js\": 5800,\n\t\"core/plugins/oas31/json-schema-2020-12-extensions/wrap-components/keywords/Default.jsx\": 4951,\n\t\"core/plugins/oas31/json-schema-2020-12-extensions/wrap-components/keywords/Description.jsx\": 809,\n\t\"core/plugins/oas31/json-schema-2020-12-extensions/wrap-components/keywords/Properties.jsx\": 7536,\n\t\"core/plugins/oas31/selectors.js\": 4280,\n\t\"core/plugins/oas31/spec-extensions/selectors.js\": 9305,\n\t\"core/plugins/oas31/spec-extensions/wrap-selectors.js\": 2884,\n\t\"core/plugins/oas31/wrap-components/contact.jsx\": 7423,\n\t\"core/plugins/oas31/wrap-components/info.jsx\": 284,\n\t\"core/plugins/oas31/wrap-components/license.jsx\": 6608,\n\t\"core/plugins/oas31/wrap-components/model.jsx\": 7042,\n\t\"core/plugins/oas31/wrap-components/models.jsx\": 2914,\n\t\"core/plugins/oas31/wrap-components/version-pragma-filter.jsx\": 1434,\n\t\"core/plugins/oas31/wrap-components/version-stamp.jsx\": 1122,\n\t\"core/plugins/on-complete/index.js\": 8560,\n\t\"core/plugins/request-snippets/fn.js\": 4624,\n\t\"core/plugins/request-snippets/index.js\": 6575,\n\t\"core/plugins/request-snippets/request-snippets.jsx\": 4206,\n\t\"core/plugins/request-snippets/selectors.js\": 4669,\n\t\"core/plugins/safe-render/components/error-boundary.jsx\": 6195,\n\t\"core/plugins/safe-render/components/fallback.jsx\": 9403,\n\t\"core/plugins/safe-render/fn.jsx\": 6189,\n\t\"core/plugins/safe-render/index.js\": 8102,\n\t\"core/plugins/samples/fn/get-json-sample-schema.js\": 2846,\n\t\"core/plugins/samples/fn/get-sample-schema.js\": 6132,\n\t\"core/plugins/samples/fn/get-xml-sample-schema.js\": 1169,\n\t\"core/plugins/samples/fn/get-yaml-sample-schema.js\": 9431,\n\t\"core/plugins/samples/fn/index.js\": 9812,\n\t\"core/plugins/samples/index.js\": 8883,\n\t\"core/plugins/spec/actions.js\": 7612,\n\t\"core/plugins/spec/index.js\": 7038,\n\t\"core/plugins/spec/reducers.js\": 32,\n\t\"core/plugins/spec/selectors.js\": 3881,\n\t\"core/plugins/spec/wrap-actions.js\": 7508,\n\t\"core/plugins/swagger-js/configs-wrap-actions.js\": 4852,\n\t\"core/plugins/swagger-js/index.js\": 9430,\n\t\"core/plugins/util/index.js\": 8525,\n\t\"core/plugins/view/fn.js\": 8347,\n\t\"core/plugins/view/index.js\": 3420,\n\t\"core/plugins/view/root-injects.jsx\": 3934\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 5102;","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_array_from_6be643d1__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_array_is_array_6a843f38__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_bind_23a689fe__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_concat_ad403b1a__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_entries_97fed13d__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_every_ac7bb0bc__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_filter_13f270a8__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_find_0ad1164d__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_for_each_f55cb86b__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_includes_c33ad5d5__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_index_of_5fb826c6__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_keys_3b8fec80__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_map_868765ae__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_reduce_e87b61a7__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_slice_9832b507__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_some_50ff1b2d__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_sort_abe23e03__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_trim_ca5b709e__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_json_stringify_1bf7a515__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_map_16a511c8__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_number_is_integer_a32e4569__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_object_assign_e13b6141__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_object_entries_20954bdf__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_object_from_entries_c9366fc2__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_object_keys_e09d3035__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_object_values_550c3b22__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_set_3488258a__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_set_timeout_d31e8027__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_url_4cfab046__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_weak_map_2eee9f61__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_weak_set_9e85a4f8__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_helpers_classPrivateFieldGet_c0aa81e1__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_helpers_defineProperty_807a2698__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_helpers_extends_d20d3ceb__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_base64_js_f145eb6e__;","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_classnames__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_ieee754__;","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"List\"]: () => __WEBPACK_EXTERNAL_MODULE_immutable__.List, [\"Map\"]: () => __WEBPACK_EXTERNAL_MODULE_immutable__.Map, [\"OrderedMap\"]: () => __WEBPACK_EXTERNAL_MODULE_immutable__.OrderedMap, [\"Seq\"]: () => __WEBPACK_EXTERNAL_MODULE_immutable__.Seq, [\"Set\"]: () => __WEBPACK_EXTERNAL_MODULE_immutable__.Set, [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_immutable__[\"default\"], [\"fromJS\"]: () => __WEBPACK_EXTERNAL_MODULE_immutable__.fromJS });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"JSON_SCHEMA\"]: () => __WEBPACK_EXTERNAL_MODULE_js_yaml_78384032__.JSON_SCHEMA, [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_js_yaml_78384032__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_lodash_get_9427f899__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_lodash_identity_75ffe4a7__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_lodash_isEmpty_e109fd6b__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_lodash_isFunction_f90b20d6__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_lodash_isPlainObject_116f2243__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_lodash_memoize_2b5bc477__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_lodash_some_5cd47809__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_prop_types_adfe8e31__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_randexp__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"Component\"]: () => __WEBPACK_EXTERNAL_MODULE_react__.Component, [\"PureComponent\"]: () => __WEBPACK_EXTERNAL_MODULE_react__.PureComponent, [\"createContext\"]: () => __WEBPACK_EXTERNAL_MODULE_react__.createContext, [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_react__[\"default\"], [\"forwardRef\"]: () => __WEBPACK_EXTERNAL_MODULE_react__.forwardRef, [\"useCallback\"]: () => __WEBPACK_EXTERNAL_MODULE_react__.useCallback, [\"useContext\"]: () => __WEBPACK_EXTERNAL_MODULE_react__.useContext, [\"useEffect\"]: () => __WEBPACK_EXTERNAL_MODULE_react__.useEffect, [\"useRef\"]: () => __WEBPACK_EXTERNAL_MODULE_react__.useRef, [\"useState\"]: () => __WEBPACK_EXTERNAL_MODULE_react__.useState });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"CopyToClipboard\"]: () => __WEBPACK_EXTERNAL_MODULE_react_copy_to_clipboard_5b11dd57__.CopyToClipboard });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_react_immutable_proptypes_89c7d083__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"applyMiddleware\"]: () => __WEBPACK_EXTERNAL_MODULE_redux__.applyMiddleware, [\"bindActionCreators\"]: () => __WEBPACK_EXTERNAL_MODULE_redux__.bindActionCreators, [\"compose\"]: () => __WEBPACK_EXTERNAL_MODULE_redux__.compose, [\"createStore\"]: () => __WEBPACK_EXTERNAL_MODULE_redux__.createStore });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"Remarkable\"]: () => __WEBPACK_EXTERNAL_MODULE_remarkable__.Remarkable });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"createSelector\"]: () => __WEBPACK_EXTERNAL_MODULE_reselect__.createSelector });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"serializeError\"]: () => __WEBPACK_EXTERNAL_MODULE_serialize_error_5f2df3e5__.serializeError });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"opId\"]: () => __WEBPACK_EXTERNAL_MODULE_swagger_client_es_helpers_4d7bea47__.opId });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_url_parse_6456105f__[\"default\"] });","module.exports = require(\"core-js-pure/stable/object/define-property\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_last_index_of_bbdfc000__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"combineReducers\"]: () => __WEBPACK_EXTERNAL_MODULE_redux_immutable_446c9f82__.combineReducers });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_lodash_merge_cf99375a__[\"default\"] });","import React from \"react\"\nimport { createStore, applyMiddleware, bindActionCreators, compose } from \"redux\"\nimport Im, { fromJS, Map } from \"immutable\"\nimport deepExtend from \"deep-extend\"\nimport { combineReducers } from \"redux-immutable\"\nimport { serializeError } from \"serialize-error\"\nimport merge from \"lodash/merge\"\nimport { NEW_THROWN_ERR } from \"corePlugins/err/actions\"\nimport win from \"core/window\"\n\nimport { systemThunkMiddleware, isFn, objMap, objReduce, isObject, isArray, isFunc } from \"core/utils\"\n\nconst idFn = a => a\n\n// Apply middleware that gets sandwitched between `dispatch` and the reducer function(s)\nfunction createStoreWithMiddleware(rootReducer, initialState, getSystem) {\n\n let middlwares = [\n // createLogger( {\n // stateTransformer: state => state && state.toJS()\n // } ),\n systemThunkMiddleware( getSystem )\n ]\n\n const composeEnhancers = win.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose\n\n return createStore(rootReducer, initialState, composeEnhancers(\n applyMiddleware( ...middlwares )\n ))\n}\n\nexport default class Store {\n\n constructor(opts={}) {\n deepExtend(this, {\n state: {},\n plugins: [],\n pluginsOptions: {},\n system: {\n configs: {},\n fn: {},\n components: {},\n rootInjects: {},\n statePlugins: {}\n },\n boundSystem: {},\n toolbox: {}\n }, opts)\n\n this.getSystem = this._getSystem.bind(this)\n\n // Bare system (nothing in it, besides the state)\n this.store = configureStore(idFn, fromJS(this.state), this.getSystem )\n\n // will be the system + Im, we can add more tools when we need to\n this.buildSystem(false)\n\n // Bootstrap plugins\n this.register(this.plugins)\n }\n\n getStore() {\n return this.store\n }\n\n register(plugins, rebuild=true) {\n var pluginSystem = combinePlugins(plugins, this.getSystem(), this.pluginsOptions)\n systemExtend(this.system, pluginSystem)\n if(rebuild) {\n this.buildSystem()\n }\n\n const needAnotherRebuild = callAfterLoad.call(this.system, plugins, this.getSystem())\n\n if(needAnotherRebuild) {\n this.buildSystem()\n }\n }\n\n buildSystem(buildReducer=true) {\n let dispatch = this.getStore().dispatch\n let getState = this.getStore().getState\n\n this.boundSystem = Object.assign({},\n this.getRootInjects(),\n this.getWrappedAndBoundActions(dispatch),\n this.getWrappedAndBoundSelectors(getState, this.getSystem),\n this.getStateThunks(getState),\n this.getFn(),\n this.getConfigs()\n )\n\n if(buildReducer)\n this.rebuildReducer()\n }\n\n _getSystem() {\n return this.boundSystem\n }\n\n getRootInjects() {\n return Object.assign({\n getSystem: this.getSystem,\n getStore: this.getStore.bind(this),\n getComponents: this.getComponents.bind(this),\n getState: this.getStore().getState,\n getConfigs: this._getConfigs.bind(this),\n Im,\n React\n }, this.system.rootInjects || {})\n }\n\n _getConfigs(){\n return this.system.configs\n }\n\n getConfigs() {\n return {\n configs: this.system.configs\n }\n }\n\n setConfigs(configs) {\n this.system.configs = configs\n }\n\n rebuildReducer() {\n this.store.replaceReducer(buildReducer(this.system.statePlugins))\n }\n\n /**\n * Generic getter from system.statePlugins\n *\n */\n getType(name) {\n let upName = name[0].toUpperCase() + name.slice(1)\n return objReduce(this.system.statePlugins, (val, namespace) => {\n let thing = val[name]\n if(thing)\n return {[namespace+upName]: thing}\n })\n }\n\n getSelectors() {\n return this.getType(\"selectors\")\n }\n\n getActions() {\n let actionHolders = this.getType(\"actions\")\n\n return objMap(actionHolders, (actions) => {\n return objReduce(actions, (action, actionName) => {\n if(isFn(action))\n return {[actionName]: action}\n })\n })\n }\n\n getWrappedAndBoundActions(dispatch) {\n let actionGroups = this.getBoundActions(dispatch)\n return objMap(actionGroups, (actions, actionGroupName) => {\n let wrappers = this.system.statePlugins[actionGroupName.slice(0,-7)].wrapActions\n if(wrappers) {\n return objMap(actions, (action, actionName) => {\n let wrap = wrappers[actionName]\n if(!wrap) {\n return action\n }\n\n if(!Array.isArray(wrap)) {\n wrap = [wrap]\n }\n return wrap.reduce((acc, fn) => {\n let newAction = (...args) => {\n return fn(acc, this.getSystem())(...args)\n }\n if(!isFn(newAction)) {\n throw new TypeError(\"wrapActions needs to return a function that returns a new function (ie the wrapped action)\")\n }\n return wrapWithTryCatch(newAction)\n }, action || Function.prototype)\n })\n }\n return actions\n })\n }\n\n getWrappedAndBoundSelectors(getState, getSystem) {\n let selectorGroups = this.getBoundSelectors(getState, getSystem)\n return objMap(selectorGroups, (selectors, selectorGroupName) => {\n let stateName = [selectorGroupName.slice(0, -9)] // selectors = 9 chars\n let wrappers = this.system.statePlugins[stateName].wrapSelectors\n if(wrappers) {\n return objMap(selectors, (selector, selectorName) => {\n let wrap = wrappers[selectorName]\n if(!wrap) {\n return selector\n }\n\n if(!Array.isArray(wrap)) {\n wrap = [wrap]\n }\n return wrap.reduce((acc, fn) => {\n let wrappedSelector = (...args) => {\n return fn(acc, this.getSystem())(getState().getIn(stateName), ...args)\n }\n if(!isFn(wrappedSelector)) {\n throw new TypeError(\"wrapSelector needs to return a function that returns a new function (ie the wrapped action)\")\n }\n return wrappedSelector\n }, selector || Function.prototype)\n })\n }\n return selectors\n })\n }\n\n getStates(state) {\n return Object.keys(this.system.statePlugins).reduce((obj, key) => {\n obj[key] = state.get(key)\n return obj\n }, {})\n }\n\n getStateThunks(getState) {\n return Object.keys(this.system.statePlugins).reduce((obj, key) => {\n obj[key] = ()=> getState().get(key)\n return obj\n }, {})\n }\n\n getFn() {\n return {\n fn: this.system.fn\n }\n }\n\n getComponents(component) {\n const res = this.system.components[component]\n\n if(Array.isArray(res)) {\n return res.reduce((ori, wrapper) => {\n return wrapper(ori, this.getSystem())\n })\n }\n if(typeof component !== \"undefined\") {\n return this.system.components[component]\n }\n\n return this.system.components\n }\n\n getBoundSelectors(getState, getSystem) {\n return objMap(this.getSelectors(), (obj, key) => {\n let stateName = [key.slice(0, -9)] // selectors = 9 chars\n const getNestedState = ()=> getState().getIn(stateName)\n\n return objMap(obj, (fn) => {\n return (...args) => {\n let res = wrapWithTryCatch(fn).apply(null, [getNestedState(), ...args])\n\n // If a selector returns a function, give it the system - for advanced usage\n if(typeof(res) === \"function\")\n res = wrapWithTryCatch(res)(getSystem())\n\n return res\n }\n })\n })\n }\n\n getBoundActions(dispatch) {\n\n dispatch = dispatch || this.getStore().dispatch\n\n const actions = this.getActions()\n\n const process = creator =>{\n if( typeof( creator ) !== \"function\" ) {\n return objMap(creator, prop => process(prop))\n }\n\n return ( ...args )=>{\n var action = null\n try{\n action = creator( ...args )\n }\n catch( e ){\n action = {type: NEW_THROWN_ERR, error: true, payload: serializeError(e) }\n }\n finally{\n return action // eslint-disable-line no-unsafe-finally\n }\n }\n\n }\n return objMap(actions, actionCreator => bindActionCreators( process( actionCreator ), dispatch ) )\n }\n\n getMapStateToProps() {\n return () => {\n return Object.assign({}, this.getSystem())\n }\n }\n\n getMapDispatchToProps(extras) {\n return (dispatch) => {\n return deepExtend({}, this.getWrappedAndBoundActions(dispatch), this.getFn(), extras)\n }\n }\n\n}\n\nfunction combinePlugins(plugins, toolbox, pluginOptions) {\n if(isObject(plugins) && !isArray(plugins)) {\n return merge({}, plugins)\n }\n\n if(isFunc(plugins)) {\n return combinePlugins(plugins(toolbox), toolbox, pluginOptions)\n }\n\n if(isArray(plugins)) {\n const dest = pluginOptions.pluginLoadType === \"chain\" ? toolbox.getComponents() : {}\n\n return plugins\n .map(plugin => combinePlugins(plugin, toolbox, pluginOptions))\n .reduce(systemExtend, dest)\n }\n\n return {}\n}\n\nfunction callAfterLoad(plugins, system, { hasLoaded } = {}) {\n let calledSomething = hasLoaded\n if(isObject(plugins) && !isArray(plugins)) {\n if(typeof plugins.afterLoad === \"function\") {\n calledSomething = true\n wrapWithTryCatch(plugins.afterLoad).call(this, system)\n }\n }\n\n if(isFunc(plugins))\n return callAfterLoad.call(this, plugins(system), system, { hasLoaded: calledSomething })\n\n if(isArray(plugins)) {\n return plugins.map(plugin => callAfterLoad.call(this, plugin, system, { hasLoaded: calledSomething }))\n }\n\n return calledSomething\n}\n\n// Wraps deepExtend, to account for certain fields, being wrappers.\n// Ie: we need to convert some fields into arrays, and append to them.\n// Rather than overwrite\nfunction systemExtend(dest={}, src={}) {\n\n if(!isObject(dest)) {\n return {}\n }\n if(!isObject(src)) {\n return dest\n }\n\n // Wrap components\n // Parses existing components in the system, and prepares them for wrapping via getComponents\n if(src.wrapComponents) {\n objMap(src.wrapComponents, (wrapperFn, key) => {\n const ori = dest.components && dest.components[key]\n if(ori && Array.isArray(ori)) {\n dest.components[key] = ori.concat([wrapperFn])\n delete src.wrapComponents[key]\n } else if(ori) {\n dest.components[key] = [ori, wrapperFn]\n delete src.wrapComponents[key]\n }\n })\n\n if(!Object.keys(src.wrapComponents).length) {\n // only delete wrapComponents if we've matched all of our wrappers to components\n // this handles cases where the component to wrap may be out of our scope,\n // but a higher recursive `combinePlugins` call will be able to handle it.\n delete src.wrapComponents\n }\n }\n\n\n // Account for wrapActions, make it an array and append to it\n // Modifies `src`\n // 80% of this code is just safe traversal. We need to address that ( ie: use a lib )\n const { statePlugins } = dest\n if(isObject(statePlugins)) {\n for(let namespace in statePlugins) {\n const namespaceObj = statePlugins[namespace]\n if(!isObject(namespaceObj)) {\n continue\n }\n\n const { wrapActions, wrapSelectors } = namespaceObj\n\n // process action wrapping\n if (isObject(wrapActions)) {\n for(let actionName in wrapActions) {\n let action = wrapActions[actionName]\n\n // This should only happen if dest is the first plugin, since invocations after that will ensure its an array\n if(!Array.isArray(action)) {\n action = [action]\n wrapActions[actionName] = action // Put the value inside an array\n }\n\n if(src && src.statePlugins && src.statePlugins[namespace] && src.statePlugins[namespace].wrapActions && src.statePlugins[namespace].wrapActions[actionName]) {\n src.statePlugins[namespace].wrapActions[actionName] = wrapActions[actionName].concat(src.statePlugins[namespace].wrapActions[actionName])\n }\n\n }\n }\n\n // process selector wrapping\n if (isObject(wrapSelectors)) {\n for(let selectorName in wrapSelectors) {\n let selector = wrapSelectors[selectorName]\n\n // This should only happen if dest is the first plugin, since invocations after that will ensure its an array\n if(!Array.isArray(selector)) {\n selector = [selector]\n wrapSelectors[selectorName] = selector // Put the value inside an array\n }\n\n if(src && src.statePlugins && src.statePlugins[namespace] && src.statePlugins[namespace].wrapSelectors && src.statePlugins[namespace].wrapSelectors[selectorName]) {\n src.statePlugins[namespace].wrapSelectors[selectorName] = wrapSelectors[selectorName].concat(src.statePlugins[namespace].wrapSelectors[selectorName])\n }\n\n }\n }\n }\n }\n\n return deepExtend(dest, src)\n}\n\nfunction buildReducer(states) {\n let reducerObj = objMap(states, (val) => {\n return val.reducers\n })\n return allReducers(reducerObj)\n}\n\nfunction allReducers(reducerSystem) {\n let reducers = Object.keys(reducerSystem).reduce((obj, key) => {\n obj[key] = makeReducer(reducerSystem[key])\n return obj\n },{})\n\n if(!Object.keys(reducers).length) {\n return idFn\n }\n\n return combineReducers(reducers)\n}\n\nfunction makeReducer(reducerObj) {\n return (state = new Map(), action) => {\n if(!reducerObj)\n return state\n\n let redFn = (reducerObj[action.type])\n if(redFn) {\n const res = wrapWithTryCatch(redFn)(state, action)\n // If the try/catch wrapper kicks in, we'll get null back...\n // in that case, we want to avoid making any changes to state\n return res === null ? state : res\n }\n return state\n }\n}\n\nfunction wrapWithTryCatch(fn, {\n logErrors = true\n} = {}) {\n if(typeof fn !== \"function\") {\n return fn\n }\n\n return function(...args) {\n try {\n return fn.call(this, ...args)\n } catch(e) {\n if(logErrors) {\n console.error(e)\n }\n return null\n }\n }\n}\n\nfunction configureStore(rootReducer, initialState, getSystem) {\n const store = createStoreWithMiddleware(rootReducer, initialState, getSystem)\n\n // if (module.hot) {\n // // Enable Webpack hot module replacement for reducers\n // module.hot.accept(\"reducers/index\", () => {\n // const nextRootReducer = require(\"reducers/index\")\n // store.replaceReducer(nextRootReducer)\n // })\n // }\n\n return store\n}\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { opId } from \"swagger-client/es/helpers\"\nimport { Iterable, fromJS, Map } from \"immutable\"\n\nexport default class OperationContainer extends PureComponent {\n constructor(props, context) {\n super(props, context)\n\n const { tryItOutEnabled } = props.getConfigs()\n\n this.state = {\n tryItOutEnabled: tryItOutEnabled === true || tryItOutEnabled === \"true\",\n executeInProgress: false\n }\n }\n\n static propTypes = {\n op: PropTypes.instanceOf(Iterable).isRequired,\n tag: PropTypes.string.isRequired,\n path: PropTypes.string.isRequired,\n method: PropTypes.string.isRequired,\n operationId: PropTypes.string.isRequired,\n showSummary: PropTypes.bool.isRequired,\n isShown: PropTypes.bool.isRequired,\n jumpToKey: PropTypes.string.isRequired,\n allowTryItOut: PropTypes.bool,\n displayOperationId: PropTypes.bool,\n isAuthorized: PropTypes.bool,\n displayRequestDuration: PropTypes.bool,\n response: PropTypes.instanceOf(Iterable),\n request: PropTypes.instanceOf(Iterable),\n security: PropTypes.instanceOf(Iterable),\n isDeepLinkingEnabled: PropTypes.bool.isRequired,\n specPath: ImPropTypes.list.isRequired,\n getComponent: PropTypes.func.isRequired,\n authActions: PropTypes.object,\n oas3Actions: PropTypes.object,\n oas3Selectors: PropTypes.object,\n authSelectors: PropTypes.object,\n specActions: PropTypes.object.isRequired,\n specSelectors: PropTypes.object.isRequired,\n layoutActions: PropTypes.object.isRequired,\n layoutSelectors: PropTypes.object.isRequired,\n fn: PropTypes.object.isRequired,\n getConfigs: PropTypes.func.isRequired\n }\n\n static defaultProps = {\n showSummary: true,\n response: null,\n allowTryItOut: true,\n displayOperationId: false,\n displayRequestDuration: false\n }\n\n mapStateToProps(nextState, props) {\n const { op, layoutSelectors, getConfigs } = props\n const { docExpansion, deepLinking, displayOperationId, displayRequestDuration, supportedSubmitMethods } = getConfigs()\n const showSummary = layoutSelectors.showSummary()\n const operationId = op.getIn([\"operation\", \"__originalOperationId\"]) || op.getIn([\"operation\", \"operationId\"]) || opId(op.get(\"operation\"), props.path, props.method) || op.get(\"id\")\n const isShownKey = [\"operations\", props.tag, operationId]\n const isDeepLinkingEnabled = deepLinking && deepLinking !== \"false\"\n const allowTryItOut = supportedSubmitMethods.indexOf(props.method) >= 0 && (typeof props.allowTryItOut === \"undefined\" ?\n props.specSelectors.allowTryItOutFor(props.path, props.method) : props.allowTryItOut)\n const security = op.getIn([\"operation\", \"security\"]) || props.specSelectors.security()\n\n return {\n operationId,\n isDeepLinkingEnabled,\n showSummary,\n displayOperationId,\n displayRequestDuration,\n allowTryItOut,\n security,\n isAuthorized: props.authSelectors.isAuthorized(security),\n isShown: layoutSelectors.isShown(isShownKey, docExpansion === \"full\" ),\n jumpToKey: `paths.${props.path}.${props.method}`,\n response: props.specSelectors.responseFor(props.path, props.method),\n request: props.specSelectors.requestFor(props.path, props.method)\n }\n }\n\n componentDidMount() {\n const { isShown } = this.props\n const resolvedSubtree = this.getResolvedSubtree()\n\n if(isShown && resolvedSubtree === undefined) {\n this.requestResolvedSubtree()\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { response, isShown } = nextProps\n const resolvedSubtree = this.getResolvedSubtree()\n\n if(response !== this.props.response) {\n this.setState({ executeInProgress: false })\n }\n\n if(isShown && resolvedSubtree === undefined) {\n this.requestResolvedSubtree()\n }\n }\n\n toggleShown =() => {\n let { layoutActions, tag, operationId, isShown } = this.props\n const resolvedSubtree = this.getResolvedSubtree()\n if(!isShown && resolvedSubtree === undefined) {\n // transitioning from collapsed to expanded\n this.requestResolvedSubtree()\n }\n layoutActions.show([\"operations\", tag, operationId], !isShown)\n }\n\n onCancelClick=() => {\n this.setState({tryItOutEnabled: !this.state.tryItOutEnabled})\n }\n\n onTryoutClick =() => {\n this.setState({tryItOutEnabled: !this.state.tryItOutEnabled})\n }\n\n onResetClick = (pathMethod) => {\n const defaultRequestBodyValue = this.props.oas3Selectors.selectDefaultRequestBodyValue(...pathMethod)\n this.props.oas3Actions.setRequestBodyValue({ value: defaultRequestBodyValue, pathMethod })\n }\n\n onExecute = () => {\n this.setState({ executeInProgress: true })\n }\n\n getResolvedSubtree = () => {\n const {\n specSelectors,\n path,\n method,\n specPath\n } = this.props\n\n if(specPath) {\n return specSelectors.specResolvedSubtree(specPath.toJS())\n }\n\n return specSelectors.specResolvedSubtree([\"paths\", path, method])\n }\n\n requestResolvedSubtree = () => {\n const {\n specActions,\n path,\n method,\n specPath\n } = this.props\n\n\n if(specPath) {\n return specActions.requestResolvedSubtree(specPath.toJS())\n }\n\n return specActions.requestResolvedSubtree([\"paths\", path, method])\n }\n\n render() {\n let {\n op: unresolvedOp,\n tag,\n path,\n method,\n security,\n isAuthorized,\n operationId,\n showSummary,\n isShown,\n jumpToKey,\n allowTryItOut,\n response,\n request,\n displayOperationId,\n displayRequestDuration,\n isDeepLinkingEnabled,\n specPath,\n specSelectors,\n specActions,\n getComponent,\n getConfigs,\n layoutSelectors,\n layoutActions,\n authActions,\n authSelectors,\n oas3Actions,\n oas3Selectors,\n fn\n } = this.props\n\n const Operation = getComponent( \"operation\" )\n\n const resolvedSubtree = this.getResolvedSubtree() || Map()\n\n const operationProps = fromJS({\n op: resolvedSubtree,\n tag,\n path,\n summary: unresolvedOp.getIn([\"operation\", \"summary\"]) || \"\",\n deprecated: resolvedSubtree.get(\"deprecated\") || unresolvedOp.getIn([\"operation\", \"deprecated\"]) || false,\n method,\n security,\n isAuthorized,\n operationId,\n originalOperationId: resolvedSubtree.getIn([\"operation\", \"__originalOperationId\"]),\n showSummary,\n isShown,\n jumpToKey,\n allowTryItOut,\n request,\n displayOperationId,\n displayRequestDuration,\n isDeepLinkingEnabled,\n executeInProgress: this.state.executeInProgress,\n tryItOutEnabled: this.state.tryItOutEnabled\n })\n\n return (\n \n )\n }\n\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class App extends React.Component {\n\n getLayout() {\n let { getComponent, layoutSelectors } = this.props\n const layoutName = layoutSelectors.current()\n const Component = getComponent(layoutName, true)\n return Component ? Component : ()=>

    No layout defined for "{layoutName}"

    \n }\n\n render() {\n const Layout = this.getLayout()\n\n return (\n \n )\n }\n}\n\nApp.propTypes = {\n getComponent: PropTypes.func.isRequired,\n layoutSelectors: PropTypes.object.isRequired,\n}\n\nApp.defaultProps = {\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class AuthorizationPopup extends React.Component {\n close =() => {\n let { authActions } = this.props\n\n authActions.showDefinitions(false)\n }\n\n render() {\n let { authSelectors, authActions, getComponent, errSelectors, specSelectors, fn: { AST = {} } } = this.props\n let definitions = authSelectors.shownDefinitions()\n const Auths = getComponent(\"auths\")\n\n return (\n
    \n
    \n
    \n
    \n
    \n
    \n

    Available authorizations

    \n \n
    \n
    \n\n {\n definitions.valueSeq().map(( definition, key ) => {\n return \n })\n }\n
    \n
    \n
    \n
    \n
    \n )\n }\n\n static propTypes = {\n fn: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n authSelectors: PropTypes.object.isRequired,\n specSelectors: PropTypes.object.isRequired,\n errSelectors: PropTypes.object.isRequired,\n authActions: PropTypes.object.isRequired,\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class AuthorizeBtn extends React.Component {\n static propTypes = {\n onClick: PropTypes.func,\n isAuthorized: PropTypes.bool,\n showPopup: PropTypes.bool,\n getComponent: PropTypes.func.isRequired\n }\n\n render() {\n let { isAuthorized, showPopup, onClick, getComponent } = this.props\n\n //must be moved out of button component\n const AuthorizationPopup = getComponent(\"authorizationPopup\", true)\n\n return (\n
    \n \n { showPopup && }\n
    \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class AuthorizeBtnContainer extends React.Component {\n\n static propTypes = {\n specActions: PropTypes.object.isRequired,\n specSelectors: PropTypes.object.isRequired,\n authActions: PropTypes.object.isRequired,\n authSelectors: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired\n }\n\n render () {\n const { authActions, authSelectors, specSelectors, getComponent} = this.props\n \n const securityDefinitions = specSelectors.securityDefinitions()\n const authorizableDefinitions = authSelectors.definitionsToAuthorize()\n\n const AuthorizeBtn = getComponent(\"authorizeBtn\")\n\n return securityDefinitions ? (\n authActions.showDefinitions(authorizableDefinitions)}\n isAuthorized={!!authSelectors.authorized().size}\n showPopup={!!authSelectors.shownDefinitions()}\n getComponent={getComponent}\n />\n ) : null\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class AuthorizeOperationBtn extends React.Component {\n static propTypes = {\n isAuthorized: PropTypes.bool.isRequired,\n onClick: PropTypes.func\n }\n\n onClick =(e) => {\n e.stopPropagation()\n let { onClick } = this.props\n\n if(onClick) {\n onClick()\n }\n }\n\n render() {\n let { isAuthorized } = this.props\n\n return (\n \n\n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class Auths extends React.Component {\n static propTypes = {\n definitions: ImPropTypes.iterable.isRequired,\n getComponent: PropTypes.func.isRequired,\n authSelectors: PropTypes.object.isRequired,\n authActions: PropTypes.object.isRequired,\n errSelectors: PropTypes.object.isRequired,\n specSelectors: PropTypes.object.isRequired\n }\n\n constructor(props, context) {\n super(props, context)\n\n this.state = {}\n }\n\n onAuthChange =(auth) => {\n let { name } = auth\n\n this.setState({ [name]: auth })\n }\n\n submitAuth =(e) => {\n e.preventDefault()\n\n let { authActions } = this.props\n authActions.authorizeWithPersistOption(this.state)\n }\n\n logoutClick =(e) => {\n e.preventDefault()\n\n let { authActions, definitions } = this.props\n let auths = definitions.map( (val, key) => {\n return key\n }).toArray()\n\n this.setState(auths.reduce((prev, auth) => {\n prev[auth] = \"\"\n return prev\n }, {}))\n\n authActions.logoutWithPersistOption(auths)\n }\n\n close =(e) => {\n e.preventDefault()\n let { authActions } = this.props\n\n authActions.showDefinitions(false)\n }\n\n render() {\n let { definitions, getComponent, authSelectors, errSelectors } = this.props\n const AuthItem = getComponent(\"AuthItem\")\n const Oauth2 = getComponent(\"oauth2\", true)\n const Button = getComponent(\"Button\")\n\n let authorized = authSelectors.authorized()\n\n let authorizedAuth = definitions.filter( (definition, key) => {\n return !!authorized.get(key)\n })\n\n let nonOauthDefinitions = definitions.filter( schema => schema.get(\"type\") !== \"oauth2\")\n let oauthDefinitions = definitions.filter( schema => schema.get(\"type\") === \"oauth2\")\n\n return (\n
    \n {\n !!nonOauthDefinitions.size &&
    \n {\n nonOauthDefinitions.map( (schema, name) => {\n return \n }).toArray()\n }\n
    \n {\n nonOauthDefinitions.size === authorizedAuth.size ? \n : \n }\n \n
    \n \n }\n\n {\n oauthDefinitions && oauthDefinitions.size ?
    \n
    \n

    Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes.

    \n

    API requires the following scopes. Select which ones you want to grant to Swagger UI.

    \n
    \n {\n definitions.filter( schema => schema.get(\"type\") === \"oauth2\")\n .map( (schema, name) =>{\n return (
    \n \n
    )\n }\n ).toArray()\n }\n
    : null\n }\n\n
    \n )\n }\n\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class Auths extends React.Component {\n static propTypes = {\n authorized: ImPropTypes.orderedMap.isRequired,\n schema: ImPropTypes.orderedMap.isRequired,\n name: PropTypes.string.isRequired,\n getComponent: PropTypes.func.isRequired,\n onAuthChange: PropTypes.func.isRequired,\n errSelectors: PropTypes.object.isRequired,\n }\n\n render() {\n let {\n schema,\n name,\n getComponent,\n onAuthChange,\n authorized,\n errSelectors\n } = this.props\n const ApiKeyAuth = getComponent(\"apiKeyAuth\")\n const BasicAuth = getComponent(\"basicAuth\")\n\n let authEl\n\n const type = schema.get(\"type\")\n\n switch(type) {\n case \"apiKey\": authEl = \n break\n case \"basic\": authEl = \n break\n default: authEl =
    Unknown security definition type { type }
    \n }\n\n return (
    \n { authEl }\n
    )\n }\n\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class AuthError extends React.Component {\n\n static propTypes = {\n error: PropTypes.object.isRequired\n }\n\n render() {\n let { error } = this.props\n\n let level = error.get(\"level\")\n let message = error.get(\"message\")\n let source = error.get(\"source\")\n\n return (\n
    \n { source } { level }\n { message }\n
    \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class ApiKeyAuth extends React.Component {\n static propTypes = {\n authorized: PropTypes.object,\n getComponent: PropTypes.func.isRequired,\n errSelectors: PropTypes.object.isRequired,\n schema: PropTypes.object.isRequired,\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func\n }\n\n constructor(props, context) {\n super(props, context)\n let { name, schema } = this.props\n let value = this.getValue()\n\n this.state = {\n name: name,\n schema: schema,\n value: value\n }\n }\n\n getValue () {\n let { name, authorized } = this.props\n\n return authorized && authorized.getIn([name, \"value\"])\n }\n\n onChange =(e) => {\n let { onChange } = this.props\n let value = e.target.value\n let newState = Object.assign({}, this.state, { value: value })\n\n this.setState(newState)\n onChange(newState)\n }\n\n render() {\n let { schema, getComponent, errSelectors, name } = this.props\n const Input = getComponent(\"Input\")\n const Row = getComponent(\"Row\")\n const Col = getComponent(\"Col\")\n const AuthError = getComponent(\"authError\")\n const Markdown = getComponent(\"Markdown\", true)\n const JumpToPath = getComponent(\"JumpToPath\", true)\n let value = this.getValue()\n let errors = errSelectors.allErrors().filter( err => err.get(\"authId\") === name)\n\n return (\n
    \n

    \n { name || schema.get(\"name\") } (apiKey)\n \n

    \n { value &&
    Authorized
    }\n \n \n \n \n

    Name: { schema.get(\"name\") }

    \n
    \n \n

    In: { schema.get(\"in\") }

    \n
    \n \n \n {\n value ? ****** \n : \n }\n \n {\n errors.valueSeq().map( (error, key) => {\n return \n } )\n }\n
    \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class BasicAuth extends React.Component {\n static propTypes = {\n authorized: ImPropTypes.map,\n schema: ImPropTypes.map,\n getComponent: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n errSelectors: PropTypes.object.isRequired,\n }\n\n constructor(props, context) {\n super(props, context)\n let { schema, name } = this.props\n\n let value = this.getValue()\n let username = value.username\n\n this.state = {\n name: name,\n schema: schema,\n value: !username ? {} : {\n username: username\n }\n }\n }\n\n getValue () {\n let { authorized, name } = this.props\n\n return authorized && authorized.getIn([name, \"value\"]) || {}\n }\n\n onChange =(e) => {\n let { onChange } = this.props\n let { value, name } = e.target\n\n let newValue = this.state.value\n newValue[name] = value\n\n this.setState({ value: newValue })\n\n onChange(this.state)\n }\n\n render() {\n let { schema, getComponent, name, errSelectors } = this.props\n const Input = getComponent(\"Input\")\n const Row = getComponent(\"Row\")\n const Col = getComponent(\"Col\")\n const AuthError = getComponent(\"authError\")\n const JumpToPath = getComponent(\"JumpToPath\", true)\n const Markdown = getComponent(\"Markdown\", true)\n let username = this.getValue().username\n let errors = errSelectors.allErrors().filter( err => err.get(\"authId\") === name)\n\n return (\n
    \n

    Basic authorization

    \n { username &&
    Authorized
    }\n \n \n \n \n \n {\n username ? { username } \n : \n }\n \n \n \n {\n username ? ****** \n : \n }\n \n {\n errors.valueSeq().map( (error, key) => {\n return \n } )\n }\n
    \n )\n }\n\n}\n","/**\n * @prettier\n */\n\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { stringify } from \"core/utils\"\n\nexport default function Example(props) {\n const { example, showValue, getComponent, getConfigs } = props\n\n const Markdown = getComponent(\"Markdown\", true)\n const HighlightCode = getComponent(\"highlightCode\")\n\n if(!example) return null\n\n return (\n
    \n {example.get(\"description\") ? (\n
    \n
    Example Description
    \n

    \n \n

    \n
    \n ) : null}\n {showValue && example.has(\"value\") ? (\n
    \n
    Example Value
    \n \n
    \n ) : null}\n
    \n )\n}\n\nExample.propTypes = {\n example: ImPropTypes.map.isRequired,\n showValue: PropTypes.bool,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.getConfigs,\n}\n","/**\n * @prettier\n */\n\nimport React from \"react\"\nimport Im from \"immutable\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class ExamplesSelect extends React.PureComponent {\n static propTypes = {\n examples: ImPropTypes.map.isRequired,\n onSelect: PropTypes.func,\n currentExampleKey: PropTypes.string,\n isModifiedValueAvailable: PropTypes.bool,\n isValueModified: PropTypes.bool,\n showLabels: PropTypes.bool,\n }\n\n static defaultProps = {\n examples: Im.Map({}),\n onSelect: (...args) =>\n console.log( // eslint-disable-line no-console\n // FIXME: remove before merging to master...\n `DEBUG: ExamplesSelect was not given an onSelect callback`,\n ...args\n ),\n currentExampleKey: null,\n showLabels: true,\n }\n\n _onSelect = (key, { isSyntheticChange = false } = {}) => {\n if (typeof this.props.onSelect === \"function\") {\n this.props.onSelect(key, {\n isSyntheticChange,\n })\n }\n }\n\n _onDomSelect = e => {\n if (typeof this.props.onSelect === \"function\") {\n const element = e.target.selectedOptions[0]\n const key = element.getAttribute(\"value\")\n\n this._onSelect(key, {\n isSyntheticChange: false,\n })\n }\n }\n\n getCurrentExample = () => {\n const { examples, currentExampleKey } = this.props\n\n const currentExamplePerProps = examples.get(currentExampleKey)\n\n const firstExamplesKey = examples.keySeq().first()\n const firstExample = examples.get(firstExamplesKey)\n\n return currentExamplePerProps || firstExample || Map({})\n }\n\n componentDidMount() {\n // this is the not-so-great part of ExamplesSelect... here we're\n // artificially kicking off an onSelect event in order to set a default\n // value in state. the consumer has the option to avoid this by checking\n // `isSyntheticEvent`, but we should really be doing this in a selector.\n // TODO: clean this up\n // FIXME: should this only trigger if `currentExamplesKey` is nullish?\n const { onSelect, examples } = this.props\n\n if (typeof onSelect === \"function\") {\n const firstExample = examples.first()\n const firstExampleKey = examples.keyOf(firstExample)\n\n this._onSelect(firstExampleKey, {\n isSyntheticChange: true,\n })\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { currentExampleKey, examples } = nextProps\n if (examples !== this.props.examples && !examples.has(currentExampleKey)) {\n // examples have changed from under us, and the currentExampleKey is no longer\n // valid.\n const firstExample = examples.first()\n const firstExampleKey = examples.keyOf(firstExample)\n\n this._onSelect(firstExampleKey, {\n isSyntheticChange: true,\n })\n }\n }\n\n render() {\n const {\n examples,\n currentExampleKey,\n isValueModified,\n isModifiedValueAvailable,\n showLabels,\n } = this.props\n\n return (\n
    \n {\n showLabels ? (\n Examples: \n ) : null\n }\n \n {isModifiedValueAvailable ? (\n \n ) : null}\n {examples\n .map((example, exampleName) => {\n return (\n \n {example.get(\"summary\") || exampleName}\n \n )\n })\n .valueSeq()}\n \n
    \n )\n }\n}\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport { Map, List } from \"immutable\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nimport { stringify } from \"core/utils\"\n\n// This stateful component lets us avoid writing competing values (user\n// modifications vs example values) into global state, and the mess that comes\n// with that: tracking which of the two values are currently used for\n// Try-It-Out, which example a modified value came from, etc...\n//\n// The solution here is to retain the last user-modified value in\n// ExamplesSelectValueRetainer's component state, so that our global state can stay\n// clean, always simply being the source of truth for what value should be both\n// displayed to the user and used as a value during request execution.\n//\n// This approach/tradeoff was chosen in order to encapsulate the particular\n// logic of Examples within the Examples component tree, and to avoid\n// regressions within our current implementation elsewhere (non-Examples\n// definitions, OpenAPI 2.0, etc). A future refactor to global state might make\n// this component unnecessary.\n//\n// TL;DR: this is not our usual approach, but the choice was made consciously.\n\n// Note that `currentNamespace` isn't currently used anywhere!\n\nconst stringifyUnlessList = input =>\n List.isList(input) ? input : stringify(input)\n\nexport default class ExamplesSelectValueRetainer extends React.PureComponent {\n static propTypes = {\n examples: ImPropTypes.map,\n onSelect: PropTypes.func,\n updateValue: PropTypes.func, // mechanism to update upstream value\n userHasEditedBody: PropTypes.bool,\n getComponent: PropTypes.func.isRequired,\n currentUserInputValue: PropTypes.any,\n currentKey: PropTypes.string,\n currentNamespace: PropTypes.string,\n setRetainRequestBodyValueFlag: PropTypes.func.isRequired,\n // (also proxies props for Examples)\n }\n\n static defaultProps = {\n userHasEditedBody: false,\n examples: Map({}),\n currentNamespace: \"__DEFAULT__NAMESPACE__\",\n setRetainRequestBodyValueFlag: () => {\n // NOOP\n },\n onSelect: (...args) =>\n console.log( // eslint-disable-line no-console\n \"ExamplesSelectValueRetainer: no `onSelect` function was provided\",\n ...args\n ),\n updateValue: (...args) =>\n console.log( // eslint-disable-line no-console\n \"ExamplesSelectValueRetainer: no `updateValue` function was provided\",\n ...args\n ),\n }\n\n constructor(props) {\n super(props)\n\n const valueFromExample = this._getCurrentExampleValue()\n\n this.state = {\n // user edited: last value that came from the world around us, and didn't\n // match the current example's value\n // internal: last value that came from user selecting an Example\n [props.currentNamespace]: Map({\n lastUserEditedValue: this.props.currentUserInputValue,\n lastDownstreamValue: valueFromExample,\n isModifiedValueSelected:\n // valueFromExample !== undefined &&\n this.props.userHasEditedBody ||\n this.props.currentUserInputValue !== valueFromExample,\n }),\n }\n }\n\n componentWillUnmount() {\n this.props.setRetainRequestBodyValueFlag(false)\n }\n\n _getStateForCurrentNamespace = () => {\n const { currentNamespace } = this.props\n\n return (this.state[currentNamespace] || Map()).toObject()\n }\n\n _setStateForCurrentNamespace = obj => {\n const { currentNamespace } = this.props\n\n return this._setStateForNamespace(currentNamespace, obj)\n }\n\n _setStateForNamespace = (namespace, obj) => {\n const oldStateForNamespace = this.state[namespace] || Map()\n const newStateForNamespace = oldStateForNamespace.mergeDeep(obj)\n return this.setState({\n [namespace]: newStateForNamespace,\n })\n }\n\n _isCurrentUserInputSameAsExampleValue = () => {\n const { currentUserInputValue } = this.props\n\n const valueFromExample = this._getCurrentExampleValue()\n\n return valueFromExample === currentUserInputValue\n }\n\n _getValueForExample = (exampleKey, props) => {\n // props are accepted so that this can be used in UNSAFE_componentWillReceiveProps,\n // which has access to `nextProps`\n const { examples } = props || this.props\n return stringifyUnlessList(\n (examples || Map({})).getIn([exampleKey, \"value\"])\n )\n }\n\n _getCurrentExampleValue = props => {\n // props are accepted so that this can be used in UNSAFE_componentWillReceiveProps,\n // which has access to `nextProps`\n const { currentKey } = props || this.props\n return this._getValueForExample(currentKey, props || this.props)\n }\n\n _onExamplesSelect = (key, { isSyntheticChange } = {}, ...otherArgs) => {\n const {\n onSelect,\n updateValue,\n currentUserInputValue,\n userHasEditedBody,\n } = this.props\n const { lastUserEditedValue } = this._getStateForCurrentNamespace()\n\n const valueFromExample = this._getValueForExample(key)\n\n if (key === \"__MODIFIED__VALUE__\") {\n updateValue(stringifyUnlessList(lastUserEditedValue))\n return this._setStateForCurrentNamespace({\n isModifiedValueSelected: true,\n })\n }\n\n if (typeof onSelect === \"function\") {\n onSelect(key, { isSyntheticChange }, ...otherArgs)\n }\n\n this._setStateForCurrentNamespace({\n lastDownstreamValue: valueFromExample,\n isModifiedValueSelected:\n (isSyntheticChange && userHasEditedBody) ||\n (!!currentUserInputValue && currentUserInputValue !== valueFromExample),\n })\n\n // we never want to send up value updates from synthetic changes\n if (isSyntheticChange) return\n\n if (typeof updateValue === \"function\") {\n updateValue(stringifyUnlessList(valueFromExample))\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n // update `lastUserEditedValue` as new currentUserInput values come in\n\n const {\n currentUserInputValue: newValue,\n examples,\n onSelect,\n userHasEditedBody,\n } = nextProps\n\n const {\n lastUserEditedValue,\n lastDownstreamValue,\n } = this._getStateForCurrentNamespace()\n\n const valueFromCurrentExample = this._getValueForExample(\n nextProps.currentKey,\n nextProps\n )\n\n const examplesMatchingNewValue = examples.filter(\n (example) =>\n example.get(\"value\") === newValue ||\n // sometimes data is stored as a string (e.g. in Request Bodies), so\n // let's check against a stringified version of our example too\n stringify(example.get(\"value\")) === newValue\n )\n\n if (examplesMatchingNewValue.size) {\n let key\n if(examplesMatchingNewValue.has(nextProps.currentKey))\n {\n key = nextProps.currentKey\n } else {\n key = examplesMatchingNewValue.keySeq().first()\n }\n onSelect(key, {\n isSyntheticChange: true,\n })\n } else if (\n newValue !== this.props.currentUserInputValue && // value has changed\n newValue !== lastUserEditedValue && // value isn't already tracked\n newValue !== lastDownstreamValue // value isn't what we've seen on the other side\n ) {\n this.props.setRetainRequestBodyValueFlag(true)\n this._setStateForNamespace(nextProps.currentNamespace, {\n lastUserEditedValue: nextProps.currentUserInputValue,\n isModifiedValueSelected:\n userHasEditedBody || newValue !== valueFromCurrentExample,\n })\n }\n }\n\n render() {\n const {\n currentUserInputValue,\n examples,\n currentKey,\n getComponent,\n userHasEditedBody,\n } = this.props\n const {\n lastDownstreamValue,\n lastUserEditedValue,\n isModifiedValueSelected,\n } = this._getStateForCurrentNamespace()\n\n const ExamplesSelect = getComponent(\"ExamplesSelect\")\n\n return (\n \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport oauth2Authorize from \"core/oauth2-authorize\"\n\nexport default class Oauth2 extends React.Component {\n static propTypes = {\n name: PropTypes.string,\n authorized: PropTypes.object,\n getComponent: PropTypes.func.isRequired,\n schema: PropTypes.object.isRequired,\n authSelectors: PropTypes.object.isRequired,\n authActions: PropTypes.object.isRequired,\n errSelectors: PropTypes.object.isRequired,\n oas3Selectors: PropTypes.object.isRequired,\n specSelectors: PropTypes.object.isRequired,\n errActions: PropTypes.object.isRequired,\n getConfigs: PropTypes.any\n }\n\n constructor(props, context) {\n super(props, context)\n let { name, schema, authorized, authSelectors } = this.props\n let auth = authorized && authorized.get(name)\n let authConfigs = authSelectors.getConfigs() || {}\n let username = auth && auth.get(\"username\") || \"\"\n let clientId = auth && auth.get(\"clientId\") || authConfigs.clientId || \"\"\n let clientSecret = auth && auth.get(\"clientSecret\") || authConfigs.clientSecret || \"\"\n let passwordType = auth && auth.get(\"passwordType\") || \"basic\"\n let scopes = auth && auth.get(\"scopes\") || authConfigs.scopes || []\n if (typeof scopes === \"string\") {\n scopes = scopes.split(authConfigs.scopeSeparator || \" \")\n }\n\n this.state = {\n appName: authConfigs.appName,\n name: name,\n schema: schema,\n scopes: scopes,\n clientId: clientId,\n clientSecret: clientSecret,\n username: username,\n password: \"\",\n passwordType: passwordType\n }\n }\n\n close = (e) => {\n e.preventDefault()\n let { authActions } = this.props\n\n authActions.showDefinitions(false)\n }\n\n authorize =() => {\n let { authActions, errActions, getConfigs, authSelectors, oas3Selectors } = this.props\n let configs = getConfigs()\n let authConfigs = authSelectors.getConfigs()\n\n errActions.clear({authId: name,type: \"auth\", source: \"auth\"})\n oauth2Authorize({\n auth: this.state,\n currentServer: oas3Selectors.serverEffectiveValue(oas3Selectors.selectedServer()),\n authActions,\n errActions,\n configs,\n authConfigs\n })\n }\n\n onScopeChange =(e) => {\n let { target } = e\n let { checked } = target\n let scope = target.dataset.value\n\n if ( checked && this.state.scopes.indexOf(scope) === -1 ) {\n let newScopes = this.state.scopes.concat([scope])\n this.setState({ scopes: newScopes })\n } else if ( !checked && this.state.scopes.indexOf(scope) > -1) {\n this.setState({ scopes: this.state.scopes.filter((val) => val !== scope) })\n }\n }\n\n onInputChange =(e) => {\n let { target : { dataset : { name }, value } } = e\n let state = {\n [name]: value\n }\n\n this.setState(state)\n }\n\n selectScopes =(e) => {\n if (e.target.dataset.all) {\n this.setState({\n scopes: Array.from((this.props.schema.get(\"allowedScopes\") || this.props.schema.get(\"scopes\")).keys())\n })\n } else {\n this.setState({ scopes: [] })\n }\n }\n\n logout =(e) => {\n e.preventDefault()\n let { authActions, errActions, name } = this.props\n\n errActions.clear({authId: name, type: \"auth\", source: \"auth\"})\n authActions.logoutWithPersistOption([ name ])\n }\n\n render() {\n let {\n schema, getComponent, authSelectors, errSelectors, name, specSelectors\n } = this.props\n const Input = getComponent(\"Input\")\n const Row = getComponent(\"Row\")\n const Col = getComponent(\"Col\")\n const Button = getComponent(\"Button\")\n const AuthError = getComponent(\"authError\")\n const JumpToPath = getComponent(\"JumpToPath\", true)\n const Markdown = getComponent(\"Markdown\", true)\n const InitializedInput = getComponent(\"InitializedInput\")\n\n const { isOAS3 } = specSelectors\n\n let oidcUrl = isOAS3() ? schema.get(\"openIdConnectUrl\") : null\n\n // Auth type consts\n const AUTH_FLOW_IMPLICIT = \"implicit\"\n const AUTH_FLOW_PASSWORD = \"password\"\n const AUTH_FLOW_ACCESS_CODE = isOAS3() ? (oidcUrl ? \"authorization_code\" : \"authorizationCode\") : \"accessCode\"\n const AUTH_FLOW_APPLICATION = isOAS3() ? (oidcUrl ? \"client_credentials\" : \"clientCredentials\") : \"application\"\n\n let authConfigs = authSelectors.getConfigs() || {}\n let isPkceCodeGrant = !!authConfigs.usePkceWithAuthorizationCodeGrant\n\n let flow = schema.get(\"flow\")\n let flowToDisplay = flow === AUTH_FLOW_ACCESS_CODE && isPkceCodeGrant ? flow + \" with PKCE\" : flow\n let scopes = schema.get(\"allowedScopes\") || schema.get(\"scopes\")\n let authorizedAuth = authSelectors.authorized().get(name)\n let isAuthorized = !!authorizedAuth\n let errors = errSelectors.allErrors().filter( err => err.get(\"authId\") === name)\n let isValid = !errors.filter( err => err.get(\"source\") === \"validation\").size\n let description = schema.get(\"description\")\n\n return (\n
    \n

    {name} (OAuth2, { flowToDisplay })

    \n { !this.state.appName ? null :
    Application: { this.state.appName }
    }\n { description && }\n\n { isAuthorized &&
    Authorized
    }\n\n { oidcUrl &&

    OpenID Connect URL: { oidcUrl }

    }\n { ( flow === AUTH_FLOW_IMPLICIT || flow === AUTH_FLOW_ACCESS_CODE ) &&

    Authorization URL: { schema.get(\"authorizationUrl\") }

    }\n { ( flow === AUTH_FLOW_PASSWORD || flow === AUTH_FLOW_ACCESS_CODE || flow === AUTH_FLOW_APPLICATION ) &&

    Token URL: { schema.get(\"tokenUrl\") }

    }\n

    Flow: { flowToDisplay }

    \n\n {\n flow !== AUTH_FLOW_PASSWORD ? null\n : \n \n \n {\n isAuthorized ? { this.state.username } \n : \n \n \n }\n \n {\n\n }\n \n \n {\n isAuthorized ? ****** \n : \n \n \n }\n \n \n \n {\n isAuthorized ? { this.state.passwordType } \n : \n \n \n }\n \n \n }\n {\n ( flow === AUTH_FLOW_APPLICATION || flow === AUTH_FLOW_IMPLICIT || flow === AUTH_FLOW_ACCESS_CODE || flow === AUTH_FLOW_PASSWORD ) &&\n ( !isAuthorized || isAuthorized && this.state.clientId) && \n \n {\n isAuthorized ? ****** \n : \n \n \n }\n \n }\n\n {\n ( (flow === AUTH_FLOW_APPLICATION || flow === AUTH_FLOW_ACCESS_CODE || flow === AUTH_FLOW_PASSWORD) && \n \n {\n isAuthorized ? ****** \n : \n \n \n }\n\n \n )}\n\n {\n !isAuthorized && scopes && scopes.size ?
    \n

    \n Scopes:\n select all\n select none\n

    \n { scopes.map((description, name) => {\n return (\n \n
    \n \n \n
    \n
    \n )\n }).toArray()\n }\n
    : null\n }\n\n {\n errors.valueSeq().map( (error, key) => {\n return \n } )\n }\n
    \n { isValid &&\n ( isAuthorized ? \n : \n )\n }\n \n
    \n\n
    \n )\n }\n}\n","import parseUrl from \"url-parse\"\nimport Im from \"immutable\"\nimport { btoa, sanitizeUrl, generateCodeVerifier, createCodeChallenge } from \"core/utils\"\n\nexport default function authorize ( { auth, authActions, errActions, configs, authConfigs={}, currentServer } ) {\n let { schema, scopes, name, clientId } = auth\n let flow = schema.get(\"flow\")\n let query = []\n\n switch (flow) {\n case \"password\":\n authActions.authorizePassword(auth)\n return\n\n case \"application\":\n authActions.authorizeApplication(auth)\n return\n\n case \"accessCode\":\n query.push(\"response_type=code\")\n break\n\n case \"implicit\":\n query.push(\"response_type=token\")\n break\n\n case \"clientCredentials\":\n case \"client_credentials\":\n // OAS3\n authActions.authorizeApplication(auth)\n return\n\n case \"authorizationCode\":\n case \"authorization_code\":\n // OAS3\n query.push(\"response_type=code\")\n break\n }\n\n if (typeof clientId === \"string\") {\n query.push(\"client_id=\" + encodeURIComponent(clientId))\n }\n\n let redirectUrl = configs.oauth2RedirectUrl\n\n // todo move to parser\n if (typeof redirectUrl === \"undefined\") {\n errActions.newAuthErr( {\n authId: name,\n source: \"validation\",\n level: \"error\",\n message: \"oauth2RedirectUrl configuration is not passed. Oauth2 authorization cannot be performed.\"\n })\n return\n }\n query.push(\"redirect_uri=\" + encodeURIComponent(redirectUrl))\n\n let scopesArray = []\n if (Array.isArray(scopes)) {\n scopesArray = scopes\n } else if (Im.List.isList(scopes)) {\n scopesArray = scopes.toArray()\n }\n\n if (scopesArray.length > 0) {\n let scopeSeparator = authConfigs.scopeSeparator || \" \"\n\n query.push(\"scope=\" + encodeURIComponent(scopesArray.join(scopeSeparator)))\n }\n\n let state = btoa(new Date())\n\n query.push(\"state=\" + encodeURIComponent(state))\n\n if (typeof authConfigs.realm !== \"undefined\") {\n query.push(\"realm=\" + encodeURIComponent(authConfigs.realm))\n }\n\n if ((flow === \"authorizationCode\" || flow === \"authorization_code\" || flow === \"accessCode\") && authConfigs.usePkceWithAuthorizationCodeGrant) {\n const codeVerifier = generateCodeVerifier()\n const codeChallenge = createCodeChallenge(codeVerifier)\n\n query.push(\"code_challenge=\" + codeChallenge)\n query.push(\"code_challenge_method=S256\")\n\n // storing the Code Verifier so it can be sent to the token endpoint\n // when exchanging the Authorization Code for an Access Token\n auth.codeVerifier = codeVerifier\n }\n\n let { additionalQueryStringParams } = authConfigs\n\n for (let key in additionalQueryStringParams) {\n if (typeof additionalQueryStringParams[key] !== \"undefined\") {\n query.push([key, additionalQueryStringParams[key]].map(encodeURIComponent).join(\"=\"))\n }\n }\n\n const authorizationUrl = schema.get(\"authorizationUrl\")\n let sanitizedAuthorizationUrl\n if (currentServer) {\n // OpenAPI 3\n sanitizedAuthorizationUrl = parseUrl(\n sanitizeUrl(authorizationUrl),\n currentServer,\n true\n ).toString()\n } else {\n sanitizedAuthorizationUrl = sanitizeUrl(authorizationUrl)\n }\n let url = [sanitizedAuthorizationUrl, query.join(\"&\")].join(authorizationUrl.indexOf(\"?\") === -1 ? \"?\" : \"&\")\n\n // pass action authorizeOauth2 and authentication data through window\n // to authorize with oauth2\n\n let callback\n if (flow === \"implicit\") {\n callback = authActions.preAuthorizeImplicit\n } else if (authConfigs.useBasicAuthenticationWithAccessCodeGrant) {\n callback = authActions.authorizeAccessCodeWithBasicAuthentication\n } else {\n callback = authActions.authorizeAccessCodeWithFormParams\n }\n\n authActions.authPopup(url, {\n auth: auth,\n state: state,\n redirectUrl: redirectUrl,\n callback: callback,\n errCb: errActions.newAuthErr\n })\n}\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class Clear extends Component {\n\n onClick =() => {\n let { specActions, path, method } = this.props\n specActions.clearResponse( path, method )\n specActions.clearRequest( path, method )\n }\n\n render(){\n return (\n \n )\n }\n\n static propTypes = {\n specActions: PropTypes.object.isRequired,\n path: PropTypes.string.isRequired,\n method: PropTypes.string.isRequired,\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nconst Headers = ( { headers } )=>{\n return (\n
    \n
    Response headers
    \n
    {headers}
    \n
    )\n}\nHeaders.propTypes = {\n headers: PropTypes.array.isRequired\n}\n\nconst Duration = ( { duration } ) => {\n return (\n
    \n
    Request duration
    \n
    {duration} ms
    \n
    \n )\n}\nDuration.propTypes = {\n duration: PropTypes.number.isRequired\n}\n\n\nexport default class LiveResponse extends React.Component {\n static propTypes = {\n response: ImPropTypes.map,\n path: PropTypes.string.isRequired,\n method: PropTypes.string.isRequired,\n displayRequestDuration: PropTypes.bool.isRequired,\n specSelectors: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired\n }\n\n shouldComponentUpdate(nextProps) {\n // BUG: props.response is always coming back as a new Immutable instance\n // same issue as responses.jsx (tryItOutResponse)\n return this.props.response !== nextProps.response\n || this.props.path !== nextProps.path\n || this.props.method !== nextProps.method\n || this.props.displayRequestDuration !== nextProps.displayRequestDuration\n }\n\n render() {\n const { response, getComponent, getConfigs, displayRequestDuration, specSelectors, path, method } = this.props\n const { showMutatedRequest, requestSnippetsEnabled } = getConfigs()\n\n const curlRequest = showMutatedRequest ? specSelectors.mutatedRequestFor(path, method) : specSelectors.requestFor(path, method)\n const status = response.get(\"status\")\n const url = curlRequest.get(\"url\")\n const headers = response.get(\"headers\").toJS()\n const notDocumented = response.get(\"notDocumented\")\n const isError = response.get(\"error\")\n const body = response.get(\"text\")\n const duration = response.get(\"duration\")\n const headersKeys = Object.keys(headers)\n const contentType = headers[\"content-type\"] || headers[\"Content-Type\"]\n\n const ResponseBody = getComponent(\"responseBody\")\n const returnObject = headersKeys.map(key => {\n var joinedHeaders = Array.isArray(headers[key]) ? headers[key].join() : headers[key]\n return {key}: {joinedHeaders} \n })\n const hasHeaders = returnObject.length !== 0\n const Markdown = getComponent(\"Markdown\", true)\n const RequestSnippets = getComponent(\"RequestSnippets\", true)\n const Curl = getComponent(\"curl\")\n\n return (\n
    \n { curlRequest && (requestSnippetsEnabled === true || requestSnippetsEnabled === \"true\"\n ? \n : ) }\n { url &&
    \n
    \n

    Request URL

    \n
    {url}
    \n
    \n
    \n }\n

    Server response

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    CodeDetails
    \n { status }\n {\n notDocumented ?
    \n Undocumented \n
    \n : null\n }\n
    \n {\n isError ? \n : null\n }\n {\n body ? \n : null\n }\n {\n hasHeaders ? : null\n }\n {\n displayRequestDuration && duration ? : null\n }\n
    \n
    \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Im from \"immutable\"\n\nexport default class Operations extends React.Component {\n\n static propTypes = {\n specSelectors: PropTypes.object.isRequired,\n specActions: PropTypes.object.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n oas3Selectors: PropTypes.func.isRequired,\n layoutSelectors: PropTypes.object.isRequired,\n layoutActions: PropTypes.object.isRequired,\n authActions: PropTypes.object.isRequired,\n authSelectors: PropTypes.object.isRequired,\n getConfigs: PropTypes.func.isRequired,\n fn: PropTypes.func.isRequired\n }\n\n render() {\n let {\n specSelectors,\n } = this.props\n\n const taggedOps = specSelectors.taggedOperations()\n\n if(taggedOps.size === 0) {\n return

    No operations defined in spec!

    \n }\n\n return (\n
    \n { taggedOps.map(this.renderOperationTag).toArray() }\n { taggedOps.size < 1 ?

    No operations defined in spec!

    : null }\n
    \n )\n }\n\n renderOperationTag = (tagObj, tag) => {\n const {\n specSelectors,\n getComponent,\n oas3Selectors,\n layoutSelectors,\n layoutActions,\n getConfigs,\n } = this.props\n const validOperationMethods = specSelectors.validOperationMethods()\n const OperationContainer = getComponent(\"OperationContainer\", true)\n const OperationTag = getComponent(\"OperationTag\")\n const operations = tagObj.get(\"operations\")\n return (\n \n
    \n {\n operations.map(op => {\n const path = op.get(\"path\")\n const method = op.get(\"method\")\n const specPath = Im.List([\"paths\", path, method])\n\n if (validOperationMethods.indexOf(method) === -1) {\n return null\n }\n\n return (\n \n )\n }).toArray()\n }\n
    \n \n )\n }\n\n}\n\nOperations.propTypes = {\n layoutActions: PropTypes.object.isRequired,\n specSelectors: PropTypes.object.isRequired,\n specActions: PropTypes.object.isRequired,\n layoutSelectors: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n fn: PropTypes.object.isRequired\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport Im from \"immutable\"\nimport { createDeepLinkPath, escapeDeepLinkPath, sanitizeUrl } from \"core/utils\"\nimport { safeBuildUrl } from \"core/utils/url\"\nimport { isFunc } from \"core/utils\"\n\nexport default class OperationTag extends React.Component {\n\n static defaultProps = {\n tagObj: Im.fromJS({}),\n tag: \"\",\n }\n\n static propTypes = {\n tagObj: ImPropTypes.map.isRequired,\n tag: PropTypes.string.isRequired,\n\n oas3Selectors: PropTypes.func.isRequired,\n layoutSelectors: PropTypes.object.isRequired,\n layoutActions: PropTypes.object.isRequired,\n\n getConfigs: PropTypes.func.isRequired,\n getComponent: PropTypes.func.isRequired,\n\n specUrl: PropTypes.string.isRequired,\n\n children: PropTypes.element,\n }\n\n render() {\n const {\n tagObj,\n tag,\n children,\n oas3Selectors,\n layoutSelectors,\n layoutActions,\n getConfigs,\n getComponent,\n specUrl,\n } = this.props\n\n let {\n docExpansion,\n deepLinking,\n } = getConfigs()\n\n const isDeepLinkingEnabled = deepLinking && deepLinking !== \"false\"\n\n const Collapse = getComponent(\"Collapse\")\n const Markdown = getComponent(\"Markdown\", true)\n const DeepLink = getComponent(\"DeepLink\")\n const Link = getComponent(\"Link\")\n\n let tagDescription = tagObj.getIn([\"tagDetails\", \"description\"], null)\n let tagExternalDocsDescription = tagObj.getIn([\"tagDetails\", \"externalDocs\", \"description\"])\n let rawTagExternalDocsUrl = tagObj.getIn([\"tagDetails\", \"externalDocs\", \"url\"])\n let tagExternalDocsUrl\n if (isFunc(oas3Selectors) && isFunc(oas3Selectors.selectedServer)) {\n tagExternalDocsUrl = safeBuildUrl(rawTagExternalDocsUrl, specUrl, { selectedServer: oas3Selectors.selectedServer() })\n } else {\n tagExternalDocsUrl = rawTagExternalDocsUrl\n }\n\n let isShownKey = [\"operations-tag\", tag]\n let showTag = layoutSelectors.isShown(isShownKey, docExpansion === \"full\" || docExpansion === \"list\")\n\n return (\n
    \n\n layoutActions.show(isShownKey, !showTag)}\n className={!tagDescription ? \"opblock-tag no-desc\" : \"opblock-tag\"}\n id={isShownKey.map(v => escapeDeepLinkPath(v)).join(\"-\")}\n data-tag={tag}\n data-is-open={showTag}\n >\n \n {!tagDescription ? :\n \n \n \n }\n\n {!tagExternalDocsUrl ? null :\n
    \n \n e.stopPropagation()}\n target=\"_blank\"\n >{tagExternalDocsDescription || tagExternalDocsUrl}\n \n
    \n }\n\n\n layoutActions.show(isShownKey, !showTag)}>\n\n \n \n \n \n \n\n \n {children}\n \n
    \n )\n }\n}\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { getList } from \"core/utils\"\nimport { getExtensions, sanitizeUrl, escapeDeepLinkPath } from \"core/utils\"\nimport { safeBuildUrl } from \"core/utils/url\"\nimport { Iterable, List } from \"immutable\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\n\nexport default class Operation extends PureComponent {\n static propTypes = {\n specPath: ImPropTypes.list.isRequired,\n operation: PropTypes.instanceOf(Iterable).isRequired,\n summary: PropTypes.string,\n response: PropTypes.instanceOf(Iterable),\n request: PropTypes.instanceOf(Iterable),\n\n toggleShown: PropTypes.func.isRequired,\n onTryoutClick: PropTypes.func.isRequired,\n onResetClick: PropTypes.func.isRequired,\n onCancelClick: PropTypes.func.isRequired,\n onExecute: PropTypes.func.isRequired,\n\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n authActions: PropTypes.object,\n authSelectors: PropTypes.object,\n specActions: PropTypes.object.isRequired,\n specSelectors: PropTypes.object.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n oas3Selectors: PropTypes.object.isRequired,\n layoutActions: PropTypes.object.isRequired,\n layoutSelectors: PropTypes.object.isRequired,\n fn: PropTypes.object.isRequired\n }\n\n static defaultProps = {\n operation: null,\n response: null,\n request: null,\n specPath: List(),\n summary: \"\"\n }\n\n render() {\n let {\n specPath,\n response,\n request,\n toggleShown,\n onTryoutClick,\n onResetClick,\n onCancelClick,\n onExecute,\n fn,\n getComponent,\n getConfigs,\n specActions,\n specSelectors,\n authActions,\n authSelectors,\n oas3Actions,\n oas3Selectors\n } = this.props\n let operationProps = this.props.operation\n\n let {\n deprecated,\n isShown,\n path,\n method,\n op,\n tag,\n operationId,\n allowTryItOut,\n displayRequestDuration,\n tryItOutEnabled,\n executeInProgress\n } = operationProps.toJS()\n\n let {\n description,\n externalDocs,\n schemes\n } = op\n\n const externalDocsUrl = externalDocs ? safeBuildUrl(externalDocs.url, specSelectors.url(), { selectedServer: oas3Selectors.selectedServer() }) : \"\"\n let operation = operationProps.getIn([\"op\"])\n let responses = operation.get(\"responses\")\n let parameters = getList(operation, [\"parameters\"])\n let operationScheme = specSelectors.operationScheme(path, method)\n let isShownKey = [\"operations\", tag, operationId]\n let extensions = getExtensions(operation)\n\n const Responses = getComponent(\"responses\")\n const Parameters = getComponent( \"parameters\" )\n const Execute = getComponent( \"execute\" )\n const Clear = getComponent( \"clear\" )\n const Collapse = getComponent( \"Collapse\" )\n const Markdown = getComponent(\"Markdown\", true)\n const Schemes = getComponent( \"schemes\" )\n const OperationServers = getComponent( \"OperationServers\" )\n const OperationExt = getComponent( \"OperationExt\" )\n const OperationSummary = getComponent( \"OperationSummary\" )\n const Link = getComponent( \"Link\" )\n\n const { showExtensions } = getConfigs()\n\n // Merge in Live Response\n if(responses && response && response.size > 0) {\n let notDocumented = !responses.get(String(response.get(\"status\"))) && !responses.get(\"default\")\n response = response.set(\"notDocumented\", notDocumented)\n }\n\n let onChangeKey = [ path, method ] // Used to add values to _this_ operation ( indexed by path and method )\n\n const validationErrors = specSelectors.validationErrors([path, method])\n\n return (\n
    \n \n \n
    \n { (operation && operation.size) || operation === null ? null :\n \n }\n { deprecated &&

    Warning: Deprecated

    }\n { description &&\n
    \n
    \n \n
    \n
    \n }\n {\n externalDocsUrl ?\n
    \n

    Find more details

    \n
    \n {externalDocs.description &&\n \n \n \n }\n {externalDocsUrl}\n
    \n
    : null\n }\n\n { !operation || !operation.size ? null :\n \n }\n\n { !tryItOutEnabled ? null :\n \n }\n\n {!tryItOutEnabled || !allowTryItOut ? null : schemes && schemes.size ?
    \n \n
    : null\n }\n\n { !tryItOutEnabled || !allowTryItOut || validationErrors.length <= 0 ? null :
    \n Please correct the following validation errors and try again.\n
      \n { validationErrors.map((error, index) =>
    • { error }
    • ) }\n
    \n
    \n }\n\n
    \n { !tryItOutEnabled || !allowTryItOut ? null :\n\n \n }\n\n { (!tryItOutEnabled || !response || !allowTryItOut) ? null :\n \n }\n
    \n\n {executeInProgress ?
    : null}\n\n { !responses ? null :\n \n }\n\n { !showExtensions || !extensions.size ? null :\n \n }\n
    \n
    \n
    \n )\n }\n\n}\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_lodash_toString_da931f05__[\"default\"] });","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Iterable, List } from \"immutable\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport toString from \"lodash/toString\"\n\n\nexport default class OperationSummary extends PureComponent {\n\n static propTypes = {\n specPath: ImPropTypes.list.isRequired,\n operationProps: PropTypes.instanceOf(Iterable).isRequired,\n isShown: PropTypes.bool.isRequired,\n toggleShown: PropTypes.func.isRequired,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n authActions: PropTypes.object,\n authSelectors: PropTypes.object,\n }\n\n static defaultProps = {\n operationProps: null,\n specPath: List(),\n summary: \"\"\n }\n\n render() {\n\n let {\n isShown,\n toggleShown,\n getComponent,\n authActions,\n authSelectors,\n operationProps,\n specPath,\n } = this.props\n\n let {\n summary,\n isAuthorized,\n method,\n op,\n showSummary,\n path,\n operationId,\n originalOperationId,\n displayOperationId,\n } = operationProps.toJS()\n\n let {\n summary: resolvedSummary,\n } = op\n\n let security = operationProps.get(\"security\")\n\n const AuthorizeOperationBtn = getComponent(\"authorizeOperationBtn\")\n const OperationSummaryMethod = getComponent(\"OperationSummaryMethod\")\n const OperationSummaryPath = getComponent(\"OperationSummaryPath\")\n const JumpToPath = getComponent(\"JumpToPath\", true)\n const CopyToClipboardBtn = getComponent(\"CopyToClipboardBtn\", true)\n\n const hasSecurity = security && !!security.count()\n const securityIsOptional = hasSecurity && security.size === 1 && security.first().isEmpty()\n const allowAnonymous = !hasSecurity || securityIsOptional\n return (\n
    \n \n \n \n\n {!showSummary ? null :\n
    \n {toString(resolvedSummary || summary)}\n
    \n }\n\n {displayOperationId && (originalOperationId || operationId) ? {originalOperationId || operationId} : null}\n\n \n \n \n \n\n {\n allowAnonymous ? null :\n {\n const applicableDefinitions = authSelectors.definitionsForRequirements(security)\n authActions.showDefinitions(applicableDefinitions)\n }}\n />\n }\n \n {/* TODO: use wrapComponents here, swagger-ui doesn't care about jumpToPath */}\n
    \n )\n\n }\n}\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Iterable } from \"immutable\"\n\nexport default class OperationSummaryMethod extends PureComponent {\n\n static propTypes = {\n operationProps: PropTypes.instanceOf(Iterable).isRequired,\n method: PropTypes.string.isRequired,\n }\n\n static defaultProps = {\n operationProps: null,\n }\n render() {\n\n let {\n method,\n } = this.props\n\n return (\n {method.toUpperCase()}\n )\n }\n}\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_splice_d746fc5e__[\"default\"] });","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Iterable } from \"immutable\"\nimport { createDeepLinkPath } from \"core/utils\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class OperationSummaryPath extends PureComponent{\n\n static propTypes = {\n specPath: ImPropTypes.list.isRequired,\n operationProps: PropTypes.instanceOf(Iterable).isRequired,\n getComponent: PropTypes.func.isRequired,\n }\n\n render(){\n let {\n getComponent,\n operationProps,\n } = this.props\n\n\n let {\n deprecated,\n isShown,\n path,\n tag,\n operationId,\n isDeepLinkingEnabled,\n } = operationProps.toJS()\n\n /**\n * Add word-break elements between each segment, before the slash\n * to allow browsers an opportunity to break long paths into sensible segments.\n */\n const pathParts = path.split(/(?=\\/)/g)\n for (let i = 1; i < pathParts.length; i += 2) {\n pathParts.splice(i, 0, )\n }\n\n const DeepLink = getComponent( \"DeepLink\" )\n\n return(\n \n \n \n\n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport const OperationExt = ({ extensions, getComponent }) => {\n let OperationExtRow = getComponent(\"OperationExtRow\")\n return (\n
    \n
    \n

    Extensions

    \n
    \n
    \n\n \n \n \n \n \n \n \n \n {\n extensions.entrySeq().map(([k, v]) => )\n }\n \n
    FieldValue
    \n
    \n
    \n )\n}\nOperationExt.propTypes = {\n extensions: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired\n}\n\nexport default OperationExt\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport const OperationExtRow = ({ xKey, xVal }) => {\n const xNormalizedValue = !xVal ? null : xVal.toJS ? xVal.toJS() : xVal\n\n return (\n { xKey }\n { JSON.stringify(xNormalizedValue) }\n )\n}\nOperationExtRow.propTypes = {\n xKey: PropTypes.string,\n xVal: PropTypes.any\n}\n\nexport default OperationExtRow\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_js_file_download_bd23dbb6__[\"default\"] });","import React, { useRef, useEffect } from \"react\"\nimport PropTypes from \"prop-types\"\nimport cx from \"classnames\"\nimport {SyntaxHighlighter, getStyle} from \"core/syntax-highlighting\"\nimport get from \"lodash/get\"\nimport isFunction from \"lodash/isFunction\"\nimport saveAs from \"js-file-download\"\nimport { CopyToClipboard } from \"react-copy-to-clipboard\"\n\nconst HighlightCode = ({value, fileName, className, downloadable, getConfigs, canCopy, language}) => {\n const config = isFunction(getConfigs) ? getConfigs() : null\n const canSyntaxHighlight = get(config, \"syntaxHighlight\") !== false && get(config, \"syntaxHighlight.activated\", true)\n const rootRef = useRef(null)\n\n useEffect(() => {\n const childNodes = Array\n .from(rootRef.current.childNodes)\n .filter(node => !!node.nodeType && node.classList.contains(\"microlight\"))\n\n // eslint-disable-next-line no-use-before-define\n childNodes.forEach(node => node.addEventListener(\"mousewheel\", handlePreventYScrollingBeyondElement, { passive: false }))\n\n return () => {\n // eslint-disable-next-line no-use-before-define\n childNodes.forEach(node => node.removeEventListener(\"mousewheel\", handlePreventYScrollingBeyondElement))\n }\n }, [value, className, language])\n\n const handleDownload = () => {\n saveAs(value, fileName)\n }\n\n const handlePreventYScrollingBeyondElement = (e) => {\n const { target, deltaY } = e\n const { scrollHeight: contentHeight, offsetHeight: visibleHeight, scrollTop } = target\n const scrollOffset = visibleHeight + scrollTop\n const isElementScrollable = contentHeight > visibleHeight\n const isScrollingPastTop = scrollTop === 0 && deltaY < 0\n const isScrollingPastBottom = scrollOffset >= contentHeight && deltaY > 0\n\n if (isElementScrollable && (isScrollingPastTop || isScrollingPastBottom)) {\n e.preventDefault()\n }\n }\n\n return (\n
    \n {!downloadable ? null :\n
    \n Download\n
    \n }\n\n {canCopy && (\n
    \n
    \n )}\n\n {canSyntaxHighlight\n ? \n {value}\n \n :
    {value}
    \n }\n\n
    \n )\n}\n\nHighlightCode.propTypes = {\n value: PropTypes.string.isRequired,\n getConfigs: PropTypes.func.isRequired,\n className: PropTypes.string,\n downloadable: PropTypes.bool,\n fileName: PropTypes.string,\n language: PropTypes.string,\n canCopy: PropTypes.bool\n}\n\nHighlightCode.defaultProps = {\n fileName: \"response.txt\"\n}\n\nexport default HighlightCode\n","import React from \"react\"\nimport { fromJS, Iterable } from \"immutable\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { defaultStatusCode, getAcceptControllingResponse } from \"core/utils\"\nimport createHtmlReadyId from \"../../helpers/create-html-ready-id\"\n\nexport default class Responses extends React.Component {\n static propTypes = {\n tryItOutResponse: PropTypes.instanceOf(Iterable),\n responses: PropTypes.instanceOf(Iterable).isRequired,\n produces: PropTypes.instanceOf(Iterable),\n producesValue: PropTypes.any,\n displayRequestDuration: PropTypes.bool.isRequired,\n path: PropTypes.string.isRequired,\n method: PropTypes.string.isRequired,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired,\n specActions: PropTypes.object.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n oas3Selectors: PropTypes.object.isRequired,\n specPath: ImPropTypes.list.isRequired,\n fn: PropTypes.object.isRequired\n }\n\n static defaultProps = {\n tryItOutResponse: null,\n produces: fromJS([\"application/json\"]),\n displayRequestDuration: false\n }\n\n // These performance-enhancing checks were disabled as part of Multiple Examples\n // because they were causing data-consistency issues\n //\n // shouldComponentUpdate(nextProps) {\n // // BUG: props.tryItOutResponse is always coming back as a new Immutable instance\n // let render = this.props.tryItOutResponse !== nextProps.tryItOutResponse\n // || this.props.responses !== nextProps.responses\n // || this.props.produces !== nextProps.produces\n // || this.props.producesValue !== nextProps.producesValue\n // || this.props.displayRequestDuration !== nextProps.displayRequestDuration\n // || this.props.path !== nextProps.path\n // || this.props.method !== nextProps.method\n // return render\n // }\n\n\tonChangeProducesWrapper = ( val ) => this.props.specActions.changeProducesValue([this.props.path, this.props.method], val)\n\n onResponseContentTypeChange = ({ controlsAcceptHeader, value }) => {\n const { oas3Actions, path, method } = this.props\n if(controlsAcceptHeader) {\n oas3Actions.setResponseContentType({\n value,\n path,\n method\n })\n }\n }\n\n render() {\n let {\n responses,\n tryItOutResponse,\n getComponent,\n getConfigs,\n specSelectors,\n fn,\n producesValue,\n displayRequestDuration,\n specPath,\n path,\n method,\n oas3Selectors,\n oas3Actions,\n } = this.props\n let defaultCode = defaultStatusCode( responses )\n\n const ContentType = getComponent( \"contentType\" )\n const LiveResponse = getComponent( \"liveResponse\" )\n const Response = getComponent( \"response\" )\n\n let produces = this.props.produces && this.props.produces.size ? this.props.produces : Responses.defaultProps.produces\n\n const isSpecOAS3 = specSelectors.isOAS3()\n\n const acceptControllingResponse = isSpecOAS3 ?\n getAcceptControllingResponse(responses) : null\n\n const regionId = createHtmlReadyId(`${method}${path}_responses`)\n const controlId = `${regionId}_select`\n\n return (\n
    \n
    \n

    Responses

    \n { specSelectors.isOAS3() ? null : }\n
    \n
    \n {\n !tryItOutResponse ? null\n :
    \n \n

    Responses

    \n
    \n\n }\n\n \n \n \n \n \n { specSelectors.isOAS3() ? : null }\n \n \n \n {\n responses.entrySeq().map( ([code, response]) => {\n\n let className = tryItOutResponse && tryItOutResponse.get(\"status\") == code ? \"response_current\" : \"\"\n return (\n \n )\n }).toArray()\n }\n \n
    CodeDescriptionLinks
    \n
    \n
    \n )\n }\n}\n","/**\n * Replace invalid characters from a string to create an html-ready ID\n *\n * @param {string} id A string that may contain invalid characters for the HTML ID attribute\n * @param {string} [replacement=_] The string to replace invalid characters with; \"_\" by default\n * @return {string} Information about the parameter schema\n */\nexport default function createHtmlReadyId(id, replacement = \"_\") {\n return id.replace(/[^\\w-]/g, replacement)\n}\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE__babel_runtime_corejs3_core_js_stable_instance_values_a68750d2__[\"default\"] });","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport cx from \"classnames\"\nimport { fromJS, Seq, Iterable, List, Map } from \"immutable\"\nimport { getExtensions, fromJSOrdered, stringify } from \"core/utils\"\nimport { getKnownSyntaxHighlighterLanguage } from \"core/utils/jsonParse\"\n\n\nconst getExampleComponent = ( sampleResponse, HighlightCode, getConfigs ) => {\n if (\n sampleResponse !== undefined &&\n sampleResponse !== null\n ) {\n let language = null\n let testValueForJson = getKnownSyntaxHighlighterLanguage(sampleResponse)\n if (testValueForJson) {\n language = \"json\"\n }\n return
    \n \n
    \n }\n return null\n}\n\nexport default class Response extends React.Component {\n constructor(props, context) {\n super(props, context)\n\n this.state = {\n responseContentType: \"\",\n }\n }\n\n static propTypes = {\n path: PropTypes.string.isRequired,\n method: PropTypes.string.isRequired,\n code: PropTypes.string.isRequired,\n response: PropTypes.instanceOf(Iterable),\n className: PropTypes.string,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n specPath: ImPropTypes.list.isRequired,\n fn: PropTypes.object.isRequired,\n contentType: PropTypes.string,\n activeExamplesKey: PropTypes.string,\n controlsAcceptHeader: PropTypes.bool,\n onContentTypeChange: PropTypes.func\n }\n\n static defaultProps = {\n response: fromJS({}),\n onContentTypeChange: () => {}\n }\n\n _onContentTypeChange = (value) => {\n const { onContentTypeChange, controlsAcceptHeader } = this.props\n this.setState({ responseContentType: value })\n onContentTypeChange({\n value: value,\n controlsAcceptHeader\n })\n }\n\n getTargetExamplesKey = () => {\n const { response, contentType, activeExamplesKey } = this.props\n\n const activeContentType = this.state.responseContentType || contentType\n const activeMediaType = response.getIn([\"content\", activeContentType], Map({}))\n const examplesForMediaType = activeMediaType.get(\"examples\", null)\n\n const firstExamplesKey = examplesForMediaType.keySeq().first()\n return activeExamplesKey || firstExamplesKey\n }\n\n render() {\n let {\n path,\n method,\n code,\n response,\n className,\n specPath,\n fn,\n getComponent,\n getConfigs,\n specSelectors,\n contentType,\n controlsAcceptHeader,\n oas3Actions,\n } = this.props\n\n let { inferSchema, getSampleSchema } = fn\n let isOAS3 = specSelectors.isOAS3()\n const { showExtensions } = getConfigs()\n\n let extensions = showExtensions ? getExtensions(response) : null\n let headers = response.get(\"headers\")\n let links = response.get(\"links\")\n const ResponseExtension = getComponent(\"ResponseExtension\")\n const Headers = getComponent(\"headers\")\n const HighlightCode = getComponent(\"highlightCode\")\n const ModelExample = getComponent(\"modelExample\")\n const Markdown = getComponent(\"Markdown\", true)\n const OperationLink = getComponent(\"operationLink\")\n const ContentType = getComponent(\"contentType\")\n const ExamplesSelect = getComponent(\"ExamplesSelect\")\n const Example = getComponent(\"Example\")\n\n\n var schema, specPathWithPossibleSchema\n\n const activeContentType = this.state.responseContentType || contentType\n const activeMediaType = response.getIn([\"content\", activeContentType], Map({}))\n const examplesForMediaType = activeMediaType.get(\"examples\", null)\n\n // Goal: find a schema value for `schema`\n if(isOAS3) {\n const oas3SchemaForContentType = activeMediaType.get(\"schema\")\n\n schema = oas3SchemaForContentType ? inferSchema(oas3SchemaForContentType.toJS()) : null\n specPathWithPossibleSchema = oas3SchemaForContentType ? List([\"content\", this.state.responseContentType, \"schema\"]) : specPath\n } else {\n schema = response.get(\"schema\")\n specPathWithPossibleSchema = response.has(\"schema\") ? specPath.push(\"schema\") : specPath\n }\n\n let mediaTypeExample\n let shouldOverrideSchemaExample = false\n let sampleSchema\n let sampleGenConfig = {\n includeReadOnly: true\n }\n\n // Goal: find an example value for `sampleResponse`\n if(isOAS3) {\n sampleSchema = activeMediaType.get(\"schema\")?.toJS()\n if(examplesForMediaType) {\n const targetExamplesKey = this.getTargetExamplesKey()\n const targetExample = examplesForMediaType\n .get(targetExamplesKey, Map({}))\n const getMediaTypeExample = (targetExample) =>\n targetExample.get(\"value\")\n mediaTypeExample = getMediaTypeExample(targetExample)\n if(mediaTypeExample === undefined) {\n mediaTypeExample = getMediaTypeExample(examplesForMediaType.values().next().value)\n }\n shouldOverrideSchemaExample = true\n } else if(activeMediaType.get(\"example\") !== undefined) {\n // use the example key's value\n mediaTypeExample = activeMediaType.get(\"example\")\n shouldOverrideSchemaExample = true\n }\n } else {\n sampleSchema = schema\n sampleGenConfig = {...sampleGenConfig, includeWriteOnly: true}\n const oldOASMediaTypeExample = response.getIn([\"examples\", activeContentType])\n if(oldOASMediaTypeExample) {\n mediaTypeExample = oldOASMediaTypeExample\n shouldOverrideSchemaExample = true\n }\n }\n\n const sampleResponse = getSampleSchema(\n sampleSchema,\n activeContentType,\n sampleGenConfig,\n shouldOverrideSchemaExample ? mediaTypeExample : undefined\n )\n\n let example = getExampleComponent( sampleResponse, HighlightCode, getConfigs )\n\n return (\n \n \n { code }\n \n \n\n
    \n \n
    \n\n { !showExtensions || !extensions.size ? null : extensions.entrySeq().map(([key, v]) => )}\n\n {isOAS3 && response.get(\"content\") ? (\n
    \n \n \n Media type\n \n \n {controlsAcceptHeader ? (\n \n Controls Accept header.\n \n ) : null}\n \n {examplesForMediaType ? (\n
    \n \n Examples\n \n \n oas3Actions.setActiveExamplesMember({\n name: key,\n pathMethod: [path, method],\n contextType: \"responses\",\n contextName: code\n })\n }\n showLabels={false}\n />\n
    \n ) : null}\n
    \n ) : null}\n\n { example || schema ? (\n \n ) : null }\n\n { isOAS3 && examplesForMediaType ? (\n \n ) : null}\n\n { headers ? (\n \n ) : null}\n\n \n {isOAS3 ? \n { links ?\n links.toSeq().entrySeq().map(([key, link]) => {\n return \n })\n : No links}\n : null}\n \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport const ResponseExtension = ({ xKey, xVal }) => {\n return
    { xKey }: { String(xVal) }
    \n}\nResponseExtension.propTypes = {\n xKey: PropTypes.string,\n xVal: PropTypes.any\n}\n\nexport default ResponseExtension\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_xml_but_prettier_2ed4d5cb__[\"default\"] });","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_lodash_toLower_c29ee2b0__[\"default\"] });","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport formatXml from \"xml-but-prettier\"\nimport toLower from \"lodash/toLower\"\nimport { extractFileNameFromContentDispositionHeader } from \"core/utils\"\nimport { getKnownSyntaxHighlighterLanguage } from \"core/utils/jsonParse\"\nimport win from \"core/window\"\n\nexport default class ResponseBody extends React.PureComponent {\n state = {\n parsedContent: null\n }\n\n static propTypes = {\n content: PropTypes.any.isRequired,\n contentType: PropTypes.string,\n getConfigs: PropTypes.func.isRequired,\n getComponent: PropTypes.func.isRequired,\n headers: PropTypes.object,\n url: PropTypes.string\n }\n\n updateParsedContent = (prevContent) => {\n const { content } = this.props\n\n if(prevContent === content) {\n return\n }\n\n if(content && content instanceof Blob) {\n var reader = new FileReader()\n reader.onload = () => {\n this.setState({\n parsedContent: reader.result\n })\n }\n reader.readAsText(content)\n } else {\n this.setState({\n parsedContent: content.toString()\n })\n }\n }\n\n componentDidMount() {\n this.updateParsedContent(null)\n }\n\n componentDidUpdate(prevProps) {\n this.updateParsedContent(prevProps.content)\n }\n\n render() {\n let { content, contentType, url, headers={}, getConfigs, getComponent } = this.props\n const { parsedContent } = this.state\n const HighlightCode = getComponent(\"highlightCode\")\n const downloadName = \"response_\" + new Date().getTime()\n let body, bodyEl\n url = url || \"\"\n\n if (\n (/^application\\/octet-stream/i.test(contentType) ||\n (headers[\"Content-Disposition\"] && /attachment/i.test(headers[\"Content-Disposition\"])) ||\n (headers[\"content-disposition\"] && /attachment/i.test(headers[\"content-disposition\"])) ||\n (headers[\"Content-Description\"] && /File Transfer/i.test(headers[\"Content-Description\"])) ||\n (headers[\"content-description\"] && /File Transfer/i.test(headers[\"content-description\"]))) &&\n content.size > 0\n ) {\n // Download\n\n if (\"Blob\" in window) {\n let type = contentType || \"text/html\"\n let blob = (content instanceof Blob) ? content : new Blob([content], {type: type})\n let href = window.URL.createObjectURL(blob)\n let fileName = url.substr(url.lastIndexOf(\"/\") + 1)\n let download = [type, fileName, href].join(\":\")\n\n // Use filename from response header,\n // First check if filename is quoted (e.g. contains space), if no, fallback to not quoted check\n let disposition = headers[\"content-disposition\"] || headers[\"Content-Disposition\"]\n if (typeof disposition !== \"undefined\") {\n let responseFilename = extractFileNameFromContentDispositionHeader(disposition)\n if (responseFilename !== null) {\n download = responseFilename\n }\n }\n\n if(win.navigator && win.navigator.msSaveOrOpenBlob) {\n bodyEl = \n } else {\n bodyEl = \n }\n } else {\n bodyEl =
    Download headers detected but your browser does not support downloading binary via XHR (Blob).
    \n }\n\n // Anything else (CORS)\n } else if (/json/i.test(contentType)) {\n // JSON\n let language = null\n let testValueForJson = getKnownSyntaxHighlighterLanguage(content)\n if (testValueForJson) {\n language = \"json\"\n }\n try {\n body = JSON.stringify(JSON.parse(content), null, \" \")\n } catch (error) {\n body = \"can't parse JSON. Raw result:\\n\\n\" + content\n }\n\n bodyEl = \n\n // XML\n } else if (/xml/i.test(contentType)) {\n body = formatXml(content, {\n textNodesOnSameLine: true,\n indentor: \" \"\n })\n bodyEl = \n\n // HTML or Plain Text\n } else if (toLower(contentType) === \"text/html\" || /text\\/plain/.test(contentType)) {\n bodyEl = \n\n // CSV\n } else if (toLower(contentType) === \"text/csv\" || /text\\/csv/.test(contentType)) {\n bodyEl = \n\n // Image\n } else if (/^image\\//i.test(contentType)) {\n if(contentType.includes(\"svg\")) {\n bodyEl =
    { content }
    \n } else {\n bodyEl = \n }\n\n // Audio\n } else if (/^audio\\//i.test(contentType)) {\n bodyEl =
    \n } else if (typeof content === \"string\") {\n bodyEl = \n } else if ( content.size > 0 ) {\n // We don't know the contentType, but there was some content returned\n if(parsedContent) {\n // We were able to squeeze something out of content\n // in `updateParsedContent`, so let's display it\n bodyEl =
    \n

    \n Unrecognized response type; displaying content as text.\n

    \n \n
    \n\n } else {\n // Give up\n bodyEl =

    \n Unrecognized response type; unable to display.\n

    \n }\n } else {\n // We don't know the contentType and there was no content returned\n bodyEl = null\n }\n\n return ( !bodyEl ? null :
    \n
    Response body
    \n { bodyEl }\n
    \n )\n }\n}\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Map, List } from \"immutable\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class Parameters extends Component {\n\n constructor(props) {\n super(props)\n this.state = {\n callbackVisible: false,\n parametersVisible: true,\n }\n }\n\n static propTypes = {\n parameters: ImPropTypes.list.isRequired,\n operation: PropTypes.object.isRequired,\n specActions: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n oas3Selectors: PropTypes.object.isRequired,\n fn: PropTypes.object.isRequired,\n tryItOutEnabled: PropTypes.bool,\n allowTryItOut: PropTypes.bool,\n onTryoutClick: PropTypes.func,\n onResetClick: PropTypes.func,\n onCancelClick: PropTypes.func,\n onChangeKey: PropTypes.array,\n pathMethod: PropTypes.array.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specPath: ImPropTypes.list.isRequired,\n }\n\n\n static defaultProps = {\n onTryoutClick: Function.prototype,\n onCancelClick: Function.prototype,\n tryItOutEnabled: false,\n allowTryItOut: true,\n onChangeKey: [],\n specPath: [],\n }\n\n onChange = (param, value, isXml) => {\n let {\n specActions: { changeParamByIdentity },\n onChangeKey,\n } = this.props\n\n changeParamByIdentity(onChangeKey, param, value, isXml)\n }\n\n onChangeConsumesWrapper = (val) => {\n let {\n specActions: { changeConsumesValue },\n onChangeKey,\n } = this.props\n\n changeConsumesValue(onChangeKey, val)\n }\n\n toggleTab = (tab) => {\n if (tab === \"parameters\") {\n return this.setState({\n parametersVisible: true,\n callbackVisible: false,\n })\n } else if (tab === \"callbacks\") {\n return this.setState({\n callbackVisible: true,\n parametersVisible: false,\n })\n }\n }\n \n onChangeMediaType = ({ value, pathMethod }) => {\n let { specActions, oas3Selectors, oas3Actions } = this.props\n const userHasEditedBody = oas3Selectors.hasUserEditedBody(...pathMethod)\n const shouldRetainRequestBodyValue = oas3Selectors.shouldRetainRequestBodyValue(...pathMethod)\n oas3Actions.setRequestContentType({ value, pathMethod })\n oas3Actions.initRequestBodyValidateError({ pathMethod })\n if (!userHasEditedBody) {\n if(!shouldRetainRequestBodyValue) {\n oas3Actions.setRequestBodyValue({ value: undefined, pathMethod })\n }\n specActions.clearResponse(...pathMethod)\n specActions.clearRequest(...pathMethod)\n specActions.clearValidateParams(pathMethod)\n }\n }\n\n render() {\n\n let {\n onTryoutClick,\n onResetClick,\n parameters,\n allowTryItOut,\n tryItOutEnabled,\n specPath,\n fn,\n getComponent,\n getConfigs,\n specSelectors,\n specActions,\n pathMethod,\n oas3Actions,\n oas3Selectors,\n operation,\n } = this.props\n\n const ParameterRow = getComponent(\"parameterRow\")\n const TryItOutButton = getComponent(\"TryItOutButton\")\n const ContentType = getComponent(\"contentType\")\n const Callbacks = getComponent(\"Callbacks\", true)\n const RequestBody = getComponent(\"RequestBody\", true)\n\n const isExecute = tryItOutEnabled && allowTryItOut\n const isOAS3 = specSelectors.isOAS3()\n\n\n const requestBody = operation.get(\"requestBody\")\n\n const groupedParametersArr = Object.values(parameters\n .reduce((acc, x) => {\n const key = x.get(\"in\")\n acc[key] ??= []\n acc[key].push(x)\n return acc\n }, {}))\n .reduce((acc, x) => acc.concat(x), [])\n\n const retainRequestBodyValueFlagForOperation = (f) => oas3Actions.setRetainRequestBodyValueFlag({ value: f, pathMethod })\n return (\n
    \n
    \n {isOAS3 ? (\n
    \n
    this.toggleTab(\"parameters\")}\n className={`tab-item ${this.state.parametersVisible && \"active\"}`}>\n

    Parameters

    \n
    \n {operation.get(\"callbacks\") ?\n (\n
    this.toggleTab(\"callbacks\")}\n className={`tab-item ${this.state.callbackVisible && \"active\"}`}>\n

    Callbacks

    \n
    \n ) : null\n }\n
    \n ) : (\n
    \n

    Parameters

    \n
    \n )}\n {allowTryItOut ? (\n onResetClick(pathMethod)}/>\n ) : null}\n
    \n {this.state.parametersVisible ?
    \n {!groupedParametersArr.length ?

    No parameters

    :\n
    \n \n \n \n \n \n \n \n \n {\n groupedParametersArr.map((parameter, i) => (\n \n ))\n }\n \n
    NameDescription
    \n
    \n }\n
    : null}\n\n {this.state.callbackVisible ?
    \n \n
    : null}\n {\n isOAS3 && requestBody && this.state.parametersVisible &&\n
    \n
    \n

    Request\n body

    \n \n
    \n
    \n {\n this.props.oas3Actions.setActiveExamplesMember({\n name: key,\n pathMethod: this.props.pathMethod,\n contextType: \"requestBody\",\n contextName: \"requestBody\", // RBs are currently not stored per-mediaType\n })\n }\n }\n onChange={(value, path) => {\n if (path) {\n const lastValue = oas3Selectors.requestBodyValue(...pathMethod)\n const usableValue = Map.isMap(lastValue) ? lastValue : Map()\n return oas3Actions.setRequestBodyValue({\n pathMethod,\n value: usableValue.setIn(path, value),\n })\n }\n oas3Actions.setRequestBodyValue({ value, pathMethod })\n }}\n onChangeIncludeEmpty={(name, value) => {\n oas3Actions.setRequestBodyInclusion({\n pathMethod,\n value,\n name,\n })\n }}\n contentType={oas3Selectors.requestContentType(...pathMethod)} />\n
    \n
    \n }\n
    \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport const ParameterExt = ({ xKey, xVal }) => {\n return
    { xKey }: { String(xVal) }
    \n}\nParameterExt.propTypes = {\n xKey: PropTypes.string,\n xVal: PropTypes.any\n}\n\nexport default ParameterExt\n","import React, { Component } from \"react\"\nimport cx from \"classnames\"\nimport PropTypes from \"prop-types\"\n\n\nconst noop = () => { }\n\nconst ParameterIncludeEmptyPropTypes = {\n isIncluded: PropTypes.bool.isRequired,\n isDisabled: PropTypes.bool.isRequired,\n isIncludedOptions: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n}\n\nconst ParameterIncludeEmptyDefaultProps = {\n onChange: noop,\n isIncludedOptions: {},\n}\nexport default class ParameterIncludeEmpty extends Component {\n static propTypes = ParameterIncludeEmptyPropTypes\n static defaultProps = ParameterIncludeEmptyDefaultProps\n\n componentDidMount() {\n const { isIncludedOptions, onChange } = this.props\n const { shouldDispatchInit, defaultValue } = isIncludedOptions\n if (shouldDispatchInit) {\n onChange(defaultValue)\n }\n }\n\n onCheckboxChange = e => {\n const { onChange } = this.props\n onChange(e.target.checked)\n }\n\n render() {\n let { isIncluded, isDisabled } = this.props\n\n return (\n
    \n \n
    \n )\n }\n}\n","import React, { Component } from \"react\"\nimport { Map, List } from \"immutable\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport win from \"core/window\"\nimport { getExtensions, getCommonExtensions, numberToString, stringify, isEmptyValue } from \"core/utils\"\nimport getParameterSchema from \"../../helpers/get-parameter-schema.js\"\n\nexport default class ParameterRow extends Component {\n static propTypes = {\n onChange: PropTypes.func.isRequired,\n param: PropTypes.object.isRequired,\n rawParam: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n fn: PropTypes.object.isRequired,\n isExecute: PropTypes.bool,\n onChangeConsumes: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired,\n specActions: PropTypes.object.isRequired,\n pathMethod: PropTypes.array.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specPath: ImPropTypes.list.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n oas3Selectors: PropTypes.object.isRequired,\n }\n\n constructor(props, context) {\n super(props, context)\n\n this.setDefaultValue()\n }\n\n UNSAFE_componentWillReceiveProps(props) {\n let { specSelectors, pathMethod, rawParam } = props\n let isOAS3 = specSelectors.isOAS3()\n\n let parameterWithMeta = specSelectors.parameterWithMetaByIdentity(pathMethod, rawParam) || new Map()\n // fallback, if the meta lookup fails\n parameterWithMeta = parameterWithMeta.isEmpty() ? rawParam : parameterWithMeta\n\n let enumValue\n\n if(isOAS3) {\n let { schema } = getParameterSchema(parameterWithMeta, { isOAS3 })\n enumValue = schema ? schema.get(\"enum\") : undefined\n } else {\n enumValue = parameterWithMeta ? parameterWithMeta.get(\"enum\") : undefined\n }\n let paramValue = parameterWithMeta ? parameterWithMeta.get(\"value\") : undefined\n\n let value\n\n if ( paramValue !== undefined ) {\n value = paramValue\n } else if ( rawParam.get(\"required\") && enumValue && enumValue.size ) {\n value = enumValue.first()\n }\n\n if ( value !== undefined && value !== paramValue ) {\n this.onChangeWrapper(numberToString(value))\n }\n // todo: could check if schema here; if not, do not call. impact?\n this.setDefaultValue()\n }\n\n onChangeWrapper = (value, isXml = false) => {\n let { onChange, rawParam } = this.props\n let valueForUpstream\n\n // Coerce empty strings and empty Immutable objects to null\n if(value === \"\" || (value && value.size === 0)) {\n valueForUpstream = null\n } else {\n valueForUpstream = value\n }\n\n return onChange(rawParam, valueForUpstream, isXml)\n }\n\n _onExampleSelect = (key, /* { isSyntheticChange } = {} */) => {\n this.props.oas3Actions.setActiveExamplesMember({\n name: key,\n pathMethod: this.props.pathMethod,\n contextType: \"parameters\",\n contextName: this.getParamKey()\n })\n }\n\n onChangeIncludeEmpty = (newValue) => {\n let { specActions, param, pathMethod } = this.props\n const paramName = param.get(\"name\")\n const paramIn = param.get(\"in\")\n return specActions.updateEmptyParamInclusion(pathMethod, paramName, paramIn, newValue)\n }\n\n setDefaultValue = () => {\n let { specSelectors, pathMethod, rawParam, oas3Selectors, fn } = this.props\n\n const paramWithMeta = specSelectors.parameterWithMetaByIdentity(pathMethod, rawParam) || Map()\n const { schema } = getParameterSchema(paramWithMeta, { isOAS3: specSelectors.isOAS3() })\n const parameterMediaType = paramWithMeta\n .get(\"content\", Map())\n .keySeq()\n .first()\n\n // getSampleSchema could return null\n const generatedSampleValue = schema ? fn.getSampleSchema(schema.toJS(), parameterMediaType, {\n\n includeWriteOnly: true\n }) : null\n\n if (!paramWithMeta || paramWithMeta.get(\"value\") !== undefined) {\n return\n }\n\n if( paramWithMeta.get(\"in\") !== \"body\" ) {\n let initialValue\n\n //// Find an initial value\n\n if (specSelectors.isSwagger2()) {\n initialValue =\n paramWithMeta.get(\"x-example\") !== undefined\n ? paramWithMeta.get(\"x-example\")\n : paramWithMeta.getIn([\"schema\", \"example\"]) !== undefined\n ? paramWithMeta.getIn([\"schema\", \"example\"])\n : (schema && schema.getIn([\"default\"]))\n } else if (specSelectors.isOAS3()) {\n const currentExampleKey = oas3Selectors.activeExamplesMember(...pathMethod, \"parameters\", this.getParamKey())\n initialValue =\n paramWithMeta.getIn([\"examples\", currentExampleKey, \"value\"]) !== undefined\n ? paramWithMeta.getIn([\"examples\", currentExampleKey, \"value\"])\n : paramWithMeta.getIn([\"content\", parameterMediaType, \"example\"]) !== undefined\n ? paramWithMeta.getIn([\"content\", parameterMediaType, \"example\"])\n : paramWithMeta.get(\"example\") !== undefined\n ? paramWithMeta.get(\"example\")\n : (schema && schema.get(\"example\")) !== undefined\n ? (schema && schema.get(\"example\"))\n : (schema && schema.get(\"default\")) !== undefined\n ? (schema && schema.get(\"default\"))\n : paramWithMeta.get(\"default\") // ensures support for `parameterMacro`\n }\n\n //// Process the initial value\n\n if(initialValue !== undefined && !List.isList(initialValue)) {\n // Stringify if it isn't a List\n initialValue = stringify(initialValue)\n }\n\n //// Dispatch the initial value\n\n if(initialValue !== undefined) {\n this.onChangeWrapper(initialValue)\n } else if(\n schema && schema.get(\"type\") === \"object\"\n && generatedSampleValue\n && !paramWithMeta.get(\"examples\")\n ) {\n // Object parameters get special treatment.. if the user doesn't set any\n // default or example values, we'll provide initial values generated from\n // the schema.\n // However, if `examples` exist for the parameter, we won't do anything,\n // so that the appropriate `examples` logic can take over.\n this.onChangeWrapper(\n List.isList(generatedSampleValue) ? (\n generatedSampleValue\n ) : (\n stringify(generatedSampleValue)\n )\n )\n }\n }\n }\n\n getParamKey() {\n const { param } = this.props\n\n if(!param) return null\n\n return `${param.get(\"name\")}-${param.get(\"in\")}`\n }\n\n render() {\n let {param, rawParam, getComponent, getConfigs, isExecute, fn, onChangeConsumes, specSelectors, pathMethod, specPath, oas3Selectors} = this.props\n\n let isOAS3 = specSelectors.isOAS3()\n\n const { showExtensions, showCommonExtensions } = getConfigs()\n\n if(!param) {\n param = rawParam\n }\n\n if(!rawParam) return null\n\n // const onChangeWrapper = (value) => onChange(param, value)\n const JsonSchemaForm = getComponent(\"JsonSchemaForm\")\n const ParamBody = getComponent(\"ParamBody\")\n let inType = param.get(\"in\")\n let bodyParam = inType !== \"body\" ? null\n : \n\n const ModelExample = getComponent(\"modelExample\")\n const Markdown = getComponent(\"Markdown\", true)\n const ParameterExt = getComponent(\"ParameterExt\")\n const ParameterIncludeEmpty = getComponent(\"ParameterIncludeEmpty\")\n const ExamplesSelectValueRetainer = getComponent(\"ExamplesSelectValueRetainer\")\n const Example = getComponent(\"Example\")\n\n let { schema } = getParameterSchema(param, { isOAS3 })\n let paramWithMeta = specSelectors.parameterWithMetaByIdentity(pathMethod, rawParam) || Map()\n\n let format = schema ? schema.get(\"format\") : null\n let type = schema ? schema.get(\"type\") : null\n let itemType = schema ? schema.getIn([\"items\", \"type\"]) : null\n let isFormData = inType === \"formData\"\n let isFormDataSupported = \"FormData\" in win\n let required = param.get(\"required\")\n\n let value = paramWithMeta ? paramWithMeta.get(\"value\") : \"\"\n let commonExt = showCommonExtensions ? getCommonExtensions(schema) : null\n let extensions = showExtensions ? getExtensions(param) : null\n\n let paramItems // undefined\n let paramEnum // undefined\n let paramDefaultValue // undefined\n let paramExample // undefined\n let isDisplayParamEnum = false\n\n if ( param !== undefined && schema ) {\n paramItems = schema.get(\"items\")\n }\n\n if (paramItems !== undefined) {\n paramEnum = paramItems.get(\"enum\")\n paramDefaultValue = paramItems.get(\"default\")\n } else if (schema) {\n paramEnum = schema.get(\"enum\")\n }\n\n if ( paramEnum && paramEnum.size && paramEnum.size > 0) {\n isDisplayParamEnum = true\n }\n\n // Default and Example Value for readonly doc\n if ( param !== undefined ) {\n if (schema) {\n paramDefaultValue = schema.get(\"default\")\n }\n if (paramDefaultValue === undefined) {\n paramDefaultValue = param.get(\"default\")\n }\n paramExample = param.get(\"example\")\n if (paramExample === undefined) {\n paramExample = param.get(\"x-example\")\n }\n }\n\n return (\n \n \n
    \n { param.get(\"name\") }\n { !required ? null :  * }\n
    \n
    \n { type }\n { itemType && `[${itemType}]` }\n { format && (${format})}\n
    \n
    \n { isOAS3 && param.get(\"deprecated\") ? \"deprecated\": null }\n
    \n
    ({ param.get(\"in\") })
    \n { !showCommonExtensions || !commonExt.size ? null : commonExt.entrySeq().map(([key, v]) => )}\n { !showExtensions || !extensions.size ? null : extensions.entrySeq().map(([key, v]) => )}\n \n\n \n { param.get(\"description\") ? : null }\n\n { (bodyParam || !isExecute) && isDisplayParamEnum ?\n Available values : \" + paramEnum.map(function(item) {\n return item\n }).toArray().join(\", \")}/>\n : null\n }\n\n { (bodyParam || !isExecute) && paramDefaultValue !== undefined ?\n Default value : \" + paramDefaultValue}/>\n : null\n }\n\n { (bodyParam || !isExecute) && paramExample !== undefined ?\n Example : \" + paramExample}/>\n : null\n }\n\n {(isFormData && !isFormDataSupported) &&
    Error: your browser does not support FormData
    }\n\n {\n isOAS3 && param.get(\"examples\") ? (\n
    \n \n
    \n ) : null\n }\n\n { bodyParam ? null\n : \n }\n\n\n {\n bodyParam && schema ? \n : null\n }\n\n {\n !bodyParam && isExecute && param.get(\"allowEmptyValue\") ?\n \n : null\n }\n\n {\n isOAS3 && param.get(\"examples\") ? (\n \n ) : null\n }\n\n \n\n \n )\n\n }\n\n}\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class Execute extends Component {\n\n static propTypes = {\n specSelectors: PropTypes.object.isRequired,\n specActions: PropTypes.object.isRequired,\n operation: PropTypes.object.isRequired,\n path: PropTypes.string.isRequired,\n method: PropTypes.string.isRequired,\n oas3Selectors: PropTypes.object.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n onExecute: PropTypes.func,\n disabled: PropTypes.bool\n }\n\n handleValidateParameters = () => {\n let { specSelectors, specActions, path, method } = this.props\n specActions.validateParams([path, method])\n return specSelectors.validateBeforeExecute([path, method])\n }\n\n handleValidateRequestBody = () => {\n let { path, method, specSelectors, oas3Selectors, oas3Actions } = this.props\n let validationErrors = {\n missingBodyValue: false,\n missingRequiredKeys: []\n }\n // context: reset errors, then (re)validate\n oas3Actions.clearRequestBodyValidateError({ path, method })\n let oas3RequiredRequestBodyContentType = specSelectors.getOAS3RequiredRequestBodyContentType([path, method])\n let oas3RequestBodyValue = oas3Selectors.requestBodyValue(path, method)\n let oas3ValidateBeforeExecuteSuccess = oas3Selectors.validateBeforeExecute([path, method])\n let oas3RequestContentType = oas3Selectors.requestContentType(path, method)\n\n if (!oas3ValidateBeforeExecuteSuccess) {\n validationErrors.missingBodyValue = true\n oas3Actions.setRequestBodyValidateError({ path, method, validationErrors })\n return false\n }\n if (!oas3RequiredRequestBodyContentType) {\n return true\n }\n let missingRequiredKeys = oas3Selectors.validateShallowRequired({\n oas3RequiredRequestBodyContentType,\n oas3RequestContentType,\n oas3RequestBodyValue\n })\n if (!missingRequiredKeys || missingRequiredKeys.length < 1) {\n return true\n }\n missingRequiredKeys.forEach((missingKey) => {\n validationErrors.missingRequiredKeys.push(missingKey)\n })\n oas3Actions.setRequestBodyValidateError({ path, method, validationErrors })\n return false\n }\n\n handleValidationResultPass = () => {\n let { specActions, operation, path, method } = this.props\n if (this.props.onExecute) {\n // loading spinner\n this.props.onExecute()\n }\n specActions.execute({ operation, path, method })\n }\n\n handleValidationResultFail = () => {\n let { specActions, path, method } = this.props\n // deferred by 40ms, to give element class change time to settle.\n specActions.clearValidateParams([path, method])\n setTimeout(() => {\n specActions.validateParams([path, method])\n }, 40)\n }\n\n handleValidationResult = (isPass) => {\n if (isPass) {\n this.handleValidationResultPass()\n } else {\n this.handleValidationResultFail()\n }\n }\n\n onClick = () => {\n let paramsResult = this.handleValidateParameters()\n let requestBodyResult = this.handleValidateRequestBody()\n let isPass = paramsResult && requestBodyResult\n this.handleValidationResult(isPass)\n }\n\n onChangeProducesWrapper = ( val ) => this.props.specActions.changeProducesValue([this.props.path, this.props.method], val)\n\n render(){\n const { disabled } = this.props\n return (\n \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Im from \"immutable\"\n\nconst propClass = \"header-example\"\n\nexport default class Headers extends React.Component {\n static propTypes = {\n headers: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired\n }\n\n render() {\n let { headers, getComponent } = this.props\n\n const Property = getComponent(\"Property\")\n const Markdown = getComponent(\"Markdown\", true)\n\n if ( !headers || !headers.size )\n return null\n\n return (\n
    \n

    Headers:

    \n \n \n \n \n \n \n \n \n \n {\n headers.entrySeq().map( ([ key, header ]) => {\n if(!Im.Map.isMap(header)) {\n return null\n }\n\n const description = header.get(\"description\")\n const type = header.getIn([\"schema\"]) ? header.getIn([\"schema\", \"type\"]) : header.getIn([\"type\"])\n const schemaExample = header.getIn([\"schema\", \"example\"])\n\n return (\n \n \n \n )\n }).toArray()\n }\n \n
    NameDescriptionType
    { key }{\n !description ? null : \n }{ type } { schemaExample ? : null }
    \n
    \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { List } from \"immutable\"\n\nexport default class Errors extends React.Component {\n\n static propTypes = {\n editorActions: PropTypes.object,\n errSelectors: PropTypes.object.isRequired,\n layoutSelectors: PropTypes.object.isRequired,\n layoutActions: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n }\n\n render() {\n let { editorActions, errSelectors, layoutSelectors, layoutActions, getComponent } = this.props\n\n const Collapse = getComponent(\"Collapse\")\n\n if(editorActions && editorActions.jumpToLine) {\n var jumpToLine = editorActions.jumpToLine\n }\n\n let errors = errSelectors.allErrors()\n\n // all thrown errors, plus error-level everything else\n let allErrorsToDisplay = errors.filter(err => err.get(\"type\") === \"thrown\" ? true :err.get(\"level\") === \"error\")\n\n if(!allErrorsToDisplay || allErrorsToDisplay.count() < 1) {\n return null\n }\n\n let isVisible = layoutSelectors.isShown([\"errorPane\"], true)\n let toggleVisibility = () => layoutActions.show([\"errorPane\"], !isVisible)\n\n let sortedJSErrors = allErrorsToDisplay.sortBy(err => err.get(\"line\"))\n\n return (\n
    \n        
    \n

    Errors

    \n \n
    \n \n
    \n { sortedJSErrors.map((err, i) => {\n let type = err.get(\"type\")\n if(type === \"thrown\" || type === \"auth\") {\n return \n }\n if(type === \"spec\") {\n return \n }\n }) }\n
    \n
    \n
    \n )\n }\n}\n\nconst ThrownErrorItem = ( { error, jumpToLine } ) => {\n if(!error) {\n return null\n }\n let errorLine = error.get(\"line\")\n\n return (\n
    \n { !error ? null :\n
    \n

    { (error.get(\"source\") && error.get(\"level\")) ?\n toTitleCase(error.get(\"source\")) + \" \" + error.get(\"level\") : \"\" }\n { error.get(\"path\") ? at {error.get(\"path\")}: null }

    \n \n { error.get(\"message\") }\n \n
    \n { errorLine && jumpToLine ? Jump to line { errorLine } : null }\n
    \n
    \n }\n
    \n )\n }\n\nconst SpecErrorItem = ( { error, jumpToLine } ) => {\n let locationMessage = null\n\n if(error.get(\"path\")) {\n if(List.isList(error.get(\"path\"))) {\n locationMessage = at { error.get(\"path\").join(\".\") }\n } else {\n locationMessage = at { error.get(\"path\") }\n }\n } else if(error.get(\"line\") && !jumpToLine) {\n locationMessage = on line { error.get(\"line\") }\n }\n\n return (\n
    \n { !error ? null :\n
    \n

    { toTitleCase(error.get(\"source\")) + \" \" + error.get(\"level\") } { locationMessage }

    \n { error.get(\"message\") }\n
    \n { jumpToLine ? (\n Jump to line { error.get(\"line\") }\n ) : null }\n
    \n
    \n }\n
    \n )\n }\n\nfunction toTitleCase(str) {\n return (str || \"\")\n .split(\" \")\n .map(substr => substr[0].toUpperCase() + substr.slice(1))\n .join(\" \")\n}\n\nThrownErrorItem.propTypes = {\n error: PropTypes.object.isRequired,\n jumpToLine: PropTypes.func\n}\n\nThrownErrorItem.defaultProps = {\n jumpToLine: null\n}\n\nSpecErrorItem.propTypes = {\n error: PropTypes.object.isRequired,\n jumpToLine: PropTypes.func\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { fromJS } from \"immutable\"\n\nconst noop = ()=>{}\n\nexport default class ContentType extends React.Component {\n\n static propTypes = {\n ariaControls: PropTypes.string,\n contentTypes: PropTypes.oneOfType([ImPropTypes.list, ImPropTypes.set, ImPropTypes.seq]),\n controlId: PropTypes.string,\n value: PropTypes.string,\n onChange: PropTypes.func,\n className: PropTypes.string,\n ariaLabel: PropTypes.string\n }\n\n static defaultProps = {\n onChange: noop,\n value: null,\n contentTypes: fromJS([\"application/json\"]),\n }\n\n componentDidMount() {\n // Needed to populate the form, initially\n if(this.props.contentTypes) {\n this.props.onChange(this.props.contentTypes.first())\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if(!nextProps.contentTypes || !nextProps.contentTypes.size) {\n return\n }\n\n if(!nextProps.contentTypes.includes(nextProps.value)) {\n nextProps.onChange(nextProps.contentTypes.first())\n }\n }\n\n onChangeWrapper = e => this.props.onChange(e.target.value)\n\n render() {\n let { ariaControls, ariaLabel, className, contentTypes, controlId, value } = this.props\n\n if ( !contentTypes || !contentTypes.size )\n return null\n\n return (\n
    \n \n
    \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nfunction xclass(...args) {\n return args.filter(a => !!a).join(\" \").trim()\n}\n\nexport class Container extends React.Component {\n render() {\n let { fullscreen, full, ...rest } = this.props\n // Normal element\n\n if(fullscreen)\n return
    \n\n let containerClass = \"swagger-container\" + (full ? \"-full\" : \"\")\n return (\n
    \n )\n }\n}\n\nContainer.propTypes = {\n fullscreen: PropTypes.bool,\n full: PropTypes.bool,\n className: PropTypes.string\n}\n\nconst DEVICES = {\n \"mobile\": \"\",\n \"tablet\": \"-tablet\",\n \"desktop\": \"-desktop\",\n \"large\": \"-hd\"\n}\n\nexport class Col extends React.Component {\n\n render() {\n const {\n hide,\n keepContents,\n /* we don't want these in the `rest` object that passes to the final component,\n since React now complains. So we extract them */\n /* eslint-disable no-unused-vars */\n mobile,\n tablet,\n desktop,\n large,\n /* eslint-enable no-unused-vars */\n ...rest\n } = this.props\n\n if(hide && !keepContents)\n return \n\n let classesAr = []\n\n for (let device in DEVICES) {\n if (!Object.prototype.hasOwnProperty.call(DEVICES, device)) {\n continue\n }\n let deviceClass = DEVICES[device]\n if(device in this.props) {\n let val = this.props[device]\n\n if(val < 1) {\n classesAr.push(\"none\" + deviceClass)\n continue\n }\n\n classesAr.push(\"block\" + deviceClass)\n classesAr.push(\"col-\" + val + deviceClass)\n }\n }\n\n if (hide) {\n classesAr.push(\"hidden\")\n }\n\n let classes = xclass(rest.className, ...classesAr)\n\n return (\n
    \n )\n }\n\n}\n\nCol.propTypes = {\n hide: PropTypes.bool,\n keepContents: PropTypes.bool,\n mobile: PropTypes.number,\n tablet: PropTypes.number,\n desktop: PropTypes.number,\n large: PropTypes.number,\n className: PropTypes.string\n}\n\nexport class Row extends React.Component {\n\n render() {\n return
    \n }\n\n}\n\nRow.propTypes = {\n className: PropTypes.string\n}\n\nexport class Button extends React.Component {\n\n static propTypes = {\n className: PropTypes.string\n }\n\n static defaultProps = {\n className: \"\"\n }\n\n render() {\n return
    \n
    \n {curlBlock}\n
    \n \n )\n }\n\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class Schemes extends React.Component {\n\n static propTypes = {\n specActions: PropTypes.object.isRequired,\n schemes: PropTypes.object.isRequired,\n currentScheme: PropTypes.string.isRequired,\n path: PropTypes.string,\n method: PropTypes.string,\n }\n\n UNSAFE_componentWillMount() {\n let { schemes } = this.props\n\n //fire 'change' event to set default 'value' of select\n this.setScheme(schemes.first())\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ( !this.props.currentScheme || !nextProps.schemes.includes(this.props.currentScheme) ) {\n // if we don't have a selected currentScheme or if our selected scheme is no longer an option,\n // then fire 'change' event and select the first scheme in the list of options\n this.setScheme(nextProps.schemes.first())\n }\n }\n\n onChange =( e ) => {\n this.setScheme( e.target.value )\n }\n\n setScheme = ( value ) => {\n let { path, method, specActions } = this.props\n\n specActions.setScheme( value, path, method )\n }\n\n render() {\n let { schemes, currentScheme } = this.props\n\n return (\n \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class SchemesContainer extends React.Component {\n\n static propTypes = {\n specActions: PropTypes.object.isRequired,\n specSelectors: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired\n }\n\n render () {\n const {specActions, specSelectors, getComponent} = this.props\n\n const currentScheme = specSelectors.operationScheme()\n const schemes = specSelectors.schemes()\n\n const Schemes = getComponent(\"schemes\")\n\n const schemesArePresent = schemes && schemes.size\n\n return schemesArePresent ? (\n \n ) : null\n }\n}\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport Im from \"immutable\"\n\nexport default class ModelCollapse extends Component {\n static propTypes = {\n collapsedContent: PropTypes.any,\n expanded: PropTypes.bool,\n children: PropTypes.any,\n title: PropTypes.element,\n modelName: PropTypes.string,\n classes: PropTypes.string,\n onToggle: PropTypes.func,\n hideSelfOnExpand: PropTypes.bool,\n layoutActions: PropTypes.object,\n layoutSelectors: PropTypes.object.isRequired,\n specPath: ImPropTypes.list.isRequired,\n }\n\n static defaultProps = {\n collapsedContent: \"{...}\",\n expanded: false,\n title: null,\n onToggle: () => {},\n hideSelfOnExpand: false,\n specPath: Im.List([]),\n }\n\n constructor(props, context) {\n super(props, context)\n\n let { expanded, collapsedContent } = this.props\n\n this.state = {\n expanded : expanded,\n collapsedContent: collapsedContent || ModelCollapse.defaultProps.collapsedContent\n }\n }\n\n componentDidMount() {\n const { hideSelfOnExpand, expanded, modelName } = this.props\n if(hideSelfOnExpand && expanded) {\n // We just mounted pre-expanded, and we won't be going back..\n // So let's give our parent an `onToggle` call..\n // Since otherwise it will never be called.\n this.props.onToggle(modelName, expanded)\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps){\n if(this.props.expanded !== nextProps.expanded){\n this.setState({expanded: nextProps.expanded})\n }\n }\n\n toggleCollapsed=()=>{\n if(this.props.onToggle){\n this.props.onToggle(this.props.modelName,!this.state.expanded)\n }\n\n this.setState({\n expanded: !this.state.expanded\n })\n }\n\n onLoad = (ref) => {\n if (ref && this.props.layoutSelectors) {\n const scrollToKey = this.props.layoutSelectors.getScrollToKey()\n\n if( Im.is(scrollToKey, this.props.specPath) ) this.toggleCollapsed()\n this.props.layoutActions.readyToScroll(this.props.specPath, ref.parentElement)\n }\n }\n\n render () {\n const { title, classes } = this.props\n\n if(this.state.expanded ) {\n if(this.props.hideSelfOnExpand) {\n return \n {this.props.children}\n \n }\n }\n\n return (\n \n \n\n { this.state.expanded && this.props.children }\n \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport cx from \"classnames\"\nimport randomBytes from \"randombytes\"\n\nexport default class ModelExample extends React.Component {\n static propTypes = {\n getComponent: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired,\n schema: PropTypes.object.isRequired,\n example: PropTypes.any.isRequired,\n isExecute: PropTypes.bool,\n getConfigs: PropTypes.func.isRequired,\n specPath: ImPropTypes.list.isRequired,\n includeReadOnly: PropTypes.bool,\n includeWriteOnly: PropTypes.bool,\n }\n\n constructor(props, context) {\n super(props, context)\n let { getConfigs, isExecute } = this.props\n let { defaultModelRendering } = getConfigs()\n\n let activeTab = defaultModelRendering\n\n if (defaultModelRendering !== \"example\" && defaultModelRendering !== \"model\") {\n activeTab = \"example\"\n }\n\n if(isExecute) {\n activeTab = \"example\"\n }\n\n this.state = {\n activeTab,\n }\n }\n\n activeTab = ( e ) => {\n let { target : { dataset : { name } } } = e\n\n this.setState({\n activeTab: name\n })\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (\n nextProps.isExecute &&\n !this.props.isExecute &&\n this.props.example\n ) {\n this.setState({ activeTab: \"example\" })\n }\n }\n\n render() {\n let { getComponent, specSelectors, schema, example, isExecute, getConfigs, specPath, includeReadOnly, includeWriteOnly } = this.props\n let { defaultModelExpandDepth } = getConfigs()\n const ModelWrapper = getComponent(\"ModelWrapper\")\n const HighlightCode = getComponent(\"highlightCode\")\n const exampleTabId = randomBytes(5).toString(\"base64\")\n const examplePanelId = randomBytes(5).toString(\"base64\")\n const modelTabId = randomBytes(5).toString(\"base64\")\n const modelPanelId = randomBytes(5).toString(\"base64\")\n\n let isOAS3 = specSelectors.isOAS3()\n\n return (\n
    \n
      \n
    • \n \n {isExecute ? \"Edit Value\" : \"Example Value\"}\n \n
    • \n { schema && (\n
    • \n \n {isOAS3 ? \"Schema\" : \"Model\" }\n \n
    • \n )}\n
    \n {this.state.activeTab === \"example\" && (\n \n {example ? example : (\n \n )}\n
    \n )}\n\n {this.state.activeTab === \"model\" && (\n \n \n \n )}\n \n )\n }\n\n}\n","import React, { Component, } from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class ModelWrapper extends Component {\n\n static propTypes = {\n schema: PropTypes.object.isRequired,\n name: PropTypes.string,\n displayName: PropTypes.string,\n fullPath: PropTypes.array.isRequired,\n specPath: ImPropTypes.list.isRequired,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired,\n expandDepth: PropTypes.number,\n layoutActions: PropTypes.object,\n layoutSelectors: PropTypes.object.isRequired,\n includeReadOnly: PropTypes.bool,\n includeWriteOnly: PropTypes.bool,\n }\n\n onToggle = (name,isShown) => {\n // If this prop is present, we'll have deepLinking for it\n if(this.props.layoutActions) {\n this.props.layoutActions.show(this.props.fullPath, isShown)\n }\n }\n\n render(){\n let { getComponent, getConfigs } = this.props\n const Model = getComponent(\"Model\")\n\n let expanded\n if(this.props.layoutSelectors) {\n // If this is prop is present, we'll have deepLinking for it\n expanded = this.props.layoutSelectors.isShown(this.props.fullPath)\n }\n\n return
    \n \n
    \n }\n}\n","import React, { Component } from \"react\"\nimport Im, { Map } from \"immutable\"\nimport PropTypes from \"prop-types\"\n\nexport default class Models extends Component {\n static propTypes = {\n getComponent: PropTypes.func,\n specSelectors: PropTypes.object,\n specActions: PropTypes.object.isRequired,\n layoutSelectors: PropTypes.object,\n layoutActions: PropTypes.object,\n getConfigs: PropTypes.func.isRequired\n }\n\n getSchemaBasePath = () => {\n const isOAS3 = this.props.specSelectors.isOAS3()\n return isOAS3 ? [\"components\", \"schemas\"] : [\"definitions\"]\n }\n\n getCollapsedContent = () => {\n return \" \"\n }\n\n handleToggle = (name, isExpanded) => {\n const { layoutActions } = this.props\n layoutActions.show([...this.getSchemaBasePath(), name], isExpanded)\n if(isExpanded) {\n this.props.specActions.requestResolvedSubtree([...this.getSchemaBasePath(), name])\n }\n }\n\n onLoadModels = (ref) => {\n if (ref) {\n this.props.layoutActions.readyToScroll(this.getSchemaBasePath(), ref)\n }\n }\n\n onLoadModel = (ref) => {\n if (ref) {\n const name = ref.getAttribute(\"data-name\")\n this.props.layoutActions.readyToScroll([...this.getSchemaBasePath(), name], ref)\n }\n }\n\n render(){\n let { specSelectors, getComponent, layoutSelectors, layoutActions, getConfigs } = this.props\n let definitions = specSelectors.definitions()\n let { docExpansion, defaultModelsExpandDepth } = getConfigs()\n if (!definitions.size || defaultModelsExpandDepth < 0) return null\n\n const specPathBase = this.getSchemaBasePath()\n let showModels = layoutSelectors.isShown(specPathBase, defaultModelsExpandDepth > 0 && docExpansion !== \"none\")\n const isOAS3 = specSelectors.isOAS3()\n\n const ModelWrapper = getComponent(\"ModelWrapper\")\n const Collapse = getComponent(\"Collapse\")\n const ModelCollapse = getComponent(\"ModelCollapse\")\n const JumpToPath = getComponent(\"JumpToPath\", true)\n\n return
    \n

    \n layoutActions.show(specPathBase, !showModels)}\n >\n {isOAS3 ? \"Schemas\" : \"Models\"}\n \n \n \n \n

    \n \n {\n definitions.entrySeq().map(([name])=>{\n\n const fullPath = [...specPathBase, name]\n const specPath = Im.List(fullPath)\n\n const schemaValue = specSelectors.specResolvedSubtree(fullPath)\n const rawSchemaValue = specSelectors.specJson().getIn(fullPath)\n\n const schema = Map.isMap(schemaValue) ? schemaValue : Im.Map()\n const rawSchema = Map.isMap(rawSchemaValue) ? rawSchemaValue : Im.Map()\n\n const displayName = schema.get(\"title\") || rawSchema.get(\"title\") || name\n const isShown = layoutSelectors.isShown(fullPath, false)\n\n if( isShown && (schema.size === 0 && rawSchema.size > 0) ) {\n // Firing an action in a container render is not great,\n // but it works for now.\n this.props.specActions.requestResolvedSubtree(fullPath)\n }\n\n const content = \n\n const title = \n \n {displayName}\n \n \n\n return
    \n \n 0 && isShown }\n >{content}\n
    \n }).toArray()\n }\n
    \n
    \n }\n}\n","import React from \"react\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nconst EnumModel = ({ value, getComponent }) => {\n let ModelCollapse = getComponent(\"ModelCollapse\")\n let collapsedContent = Array [ { value.count() } ]\n return \n Enum:
    \n \n [ { value.join(\", \") } ]\n \n
    \n}\nEnumModel.propTypes = {\n value: ImPropTypes.iterable,\n getComponent: ImPropTypes.func\n}\n\nexport default EnumModel","import React, { Component, } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { List } from \"immutable\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { sanitizeUrl } from \"core/utils\"\n\nconst braceOpen = \"{\"\nconst braceClose = \"}\"\nconst propClass = \"property\"\n\nexport default class ObjectModel extends Component {\n static propTypes = {\n schema: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n expanded: PropTypes.bool,\n onToggle: PropTypes.func,\n specSelectors: PropTypes.object.isRequired,\n name: PropTypes.string,\n displayName: PropTypes.string,\n isRef: PropTypes.bool,\n expandDepth: PropTypes.number,\n depth: PropTypes.number,\n specPath: ImPropTypes.list.isRequired,\n includeReadOnly: PropTypes.bool,\n includeWriteOnly: PropTypes.bool,\n }\n\n render(){\n let { schema, name, displayName, isRef, getComponent, getConfigs, depth, onToggle, expanded, specPath, ...otherProps } = this.props\n let { specSelectors,expandDepth, includeReadOnly, includeWriteOnly} = otherProps\n const { isOAS3 } = specSelectors\n\n if(!schema) {\n return null\n }\n\n const { showExtensions } = getConfigs()\n\n let description = schema.get(\"description\")\n let properties = schema.get(\"properties\")\n let additionalProperties = schema.get(\"additionalProperties\")\n let title = schema.get(\"title\") || displayName || name\n let requiredProperties = schema.get(\"required\")\n let infoProperties = schema\n .filter( ( v, key) => [\"maxProperties\", \"minProperties\", \"nullable\", \"example\"].indexOf(key) !== -1 )\n let deprecated = schema.get(\"deprecated\")\n let externalDocsUrl = schema.getIn([\"externalDocs\", \"url\"])\n let externalDocsDescription = schema.getIn([\"externalDocs\", \"description\"])\n\n const JumpToPath = getComponent(\"JumpToPath\", true)\n const Markdown = getComponent(\"Markdown\", true)\n const Model = getComponent(\"Model\")\n const ModelCollapse = getComponent(\"ModelCollapse\")\n const Property = getComponent(\"Property\")\n const Link = getComponent(\"Link\")\n\n const JumpToPathSection = () => {\n return \n }\n const collapsedContent = (\n { braceOpen }...{ braceClose }\n {\n isRef ? : \"\"\n }\n )\n\n const anyOf = specSelectors.isOAS3() ? schema.get(\"anyOf\") : null\n const oneOf = specSelectors.isOAS3() ? schema.get(\"oneOf\") : null\n const not = specSelectors.isOAS3() ? schema.get(\"not\") : null\n\n const titleEl = title && \n { isRef && schema.get(\"$$ref\") && { schema.get(\"$$ref\") } }\n { title }\n \n\n return \n \n\n { braceOpen }\n {\n !isRef ? null : \n }\n \n {\n \n {\n !description ? null : \n \n \n \n }\n {\n externalDocsUrl &&\n \n \n \n \n }\n {\n !deprecated ? null :\n \n \n \n \n }\n {\n !(properties && properties.size) ? null : properties.entrySeq().filter(\n ([, value]) => {\n return (!value.get(\"readOnly\") || includeReadOnly) &&\n (!value.get(\"writeOnly\") || includeWriteOnly)\n }\n ).map(\n ([key, value]) => {\n let isDeprecated = isOAS3() && value.get(\"deprecated\")\n let isRequired = List.isList(requiredProperties) && requiredProperties.contains(key)\n\n let classNames = [\"property-row\"]\n\n if (isDeprecated) {\n classNames.push(\"deprecated\")\n }\n\n if (isRequired) {\n classNames.push(\"required\")\n }\n\n return (\n \n \n )\n }).toArray()\n }\n {\n // empty row before extensions...\n !showExtensions ? null : \n }\n {\n !showExtensions ? null :\n schema.entrySeq().map(\n ([key, value]) => {\n if(key.slice(0,2) !== \"x-\") {\n return\n }\n\n const normalizedValue = !value ? null : value.toJS ? value.toJS() : value\n\n return (\n \n \n )\n }).toArray()\n }\n {\n !additionalProperties || !additionalProperties.size ? null\n : \n \n \n \n }\n {\n !anyOf ? null\n : \n \n \n \n }\n {\n !oneOf ? null\n : \n \n \n \n }\n {\n !not ? null\n : \n \n \n \n }\n
    description:\n \n
    \n externalDocs:\n \n {externalDocsDescription || externalDocsUrl}\n
    \n deprecated:\n \n true\n
    \n { key }{ isRequired && * }\n \n \n
     
    \n { key }\n \n { JSON.stringify(normalizedValue) }\n
    { \"< * >:\" }\n \n
    { \"anyOf ->\" }\n {anyOf.map((schema, k) => {\n return
    \n })}\n
    { \"oneOf ->\" }\n {oneOf.map((schema, k) => {\n return
    \n })}\n
    { \"not ->\" }\n
    \n \n
    \n
    \n }\n
    \n { braceClose }\n \n {\n infoProperties.size ? infoProperties.entrySeq().map( ( [ key, v ] ) => ) : null\n }\n
    \n }\n}\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { sanitizeUrl } from \"core/utils\"\n\nconst propClass = \"property\"\n\nexport default class ArrayModel extends Component {\n static propTypes = {\n schema: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired,\n name: PropTypes.string,\n displayName: PropTypes.string,\n required: PropTypes.bool,\n expandDepth: PropTypes.number,\n specPath: ImPropTypes.list.isRequired,\n depth: PropTypes.number,\n includeReadOnly: PropTypes.bool,\n includeWriteOnly: PropTypes.bool,\n }\n\n render(){\n let { getComponent, getConfigs, schema, depth, expandDepth, name, displayName, specPath } = this.props\n let description = schema.get(\"description\")\n let items = schema.get(\"items\")\n let title = schema.get(\"title\") || displayName || name\n let properties = schema.filter( ( v, key) => [\"type\", \"items\", \"description\", \"$$ref\", \"externalDocs\"].indexOf(key) === -1 )\n let externalDocsUrl = schema.getIn([\"externalDocs\", \"url\"])\n let externalDocsDescription = schema.getIn([\"externalDocs\", \"description\"])\n\n\n const Markdown = getComponent(\"Markdown\", true)\n const ModelCollapse = getComponent(\"ModelCollapse\")\n const Model = getComponent(\"Model\")\n const Property = getComponent(\"Property\")\n const Link = getComponent(\"Link\")\n\n const titleEl = title &&\n \n { title }\n \n\n /*\n Note: we set `name={null}` in below because we don't want\n the name of the current Model passed (and displayed) as the name of the array element Model\n */\n\n return \n \n [\n {\n properties.size ? properties.entrySeq().map( ( [ key, v ] ) => ) : null\n }\n {\n !description ? (properties.size ?
    : null) :\n \n }\n { externalDocsUrl &&\n
    \n {externalDocsDescription || externalDocsUrl}\n
    \n }\n \n \n \n ]\n
    \n
    \n }\n}\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { getExtensions, sanitizeUrl } from \"core/utils\"\n\nconst propClass = \"property primitive\"\n\nexport default class Primitive extends Component {\n static propTypes = {\n schema: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n name: PropTypes.string,\n displayName: PropTypes.string,\n depth: PropTypes.number,\n expandDepth: PropTypes.number\n }\n\n render() {\n let { schema, getComponent, getConfigs, name, displayName, depth, expandDepth } = this.props\n\n const { showExtensions } = getConfigs()\n\n if (!schema || !schema.get) {\n // don't render if schema isn't correctly formed\n return
    \n }\n\n let type = schema.get(\"type\")\n let format = schema.get(\"format\")\n let xml = schema.get(\"xml\")\n let enumArray = schema.get(\"enum\")\n let title = schema.get(\"title\") || displayName || name\n let description = schema.get(\"description\")\n let extensions = getExtensions(schema)\n let properties = schema\n .filter((_, key) => [\"enum\", \"type\", \"format\", \"description\", \"$$ref\", \"externalDocs\"].indexOf(key) === -1)\n .filterNot((_, key) => extensions.has(key))\n let externalDocsUrl = schema.getIn([\"externalDocs\", \"url\"])\n let externalDocsDescription = schema.getIn([\"externalDocs\", \"description\"])\n\n const Markdown = getComponent(\"Markdown\", true)\n const EnumModel = getComponent(\"EnumModel\")\n const Property = getComponent(\"Property\")\n const ModelCollapse = getComponent(\"ModelCollapse\")\n const Link = getComponent(\"Link\")\n\n const titleEl = title &&\n \n {title}\n \n\n return \n \n \n {name && depth > 1 && {title}}\n {type}\n {format && (${format})}\n {\n properties.size ? properties.entrySeq().map(([key, v]) => ) : null\n }\n {\n showExtensions && extensions.size ? extensions.entrySeq().map(([key, v]) => ) : null\n }\n {\n !description ? null :\n \n }\n {\n externalDocsUrl &&\n
    \n {externalDocsDescription || externalDocsUrl}\n
    \n }\n {\n xml && xml.size ? (
    xml:\n {\n xml.entrySeq().map(([key, v]) =>
       {key}: {String(v)}
    ).toArray()\n }\n
    ) : null\n }\n {\n enumArray && \n }\n
    \n
    \n
    \n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport const Property = ({ propKey, propVal, propClass }) => {\n return (\n \n
    { propKey }: { String(propVal) }
    \n )\n}\nProperty.propTypes = {\n propKey: PropTypes.string,\n propVal: PropTypes.any,\n propClass: PropTypes.string\n}\n\nexport default Property\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class TryItOutButton extends React.Component {\n\n static propTypes = {\n onTryoutClick: PropTypes.func,\n onResetClick: PropTypes.func,\n onCancelClick: PropTypes.func,\n enabled: PropTypes.bool, // Try it out is enabled, ie: the user has access to the form\n hasUserEditedBody: PropTypes.bool, // Try it out is enabled, ie: the user has access to the form\n isOAS3: PropTypes.bool, // Try it out is enabled, ie: the user has access to the form\n }\n\n static defaultProps = {\n onTryoutClick: Function.prototype,\n onCancelClick: Function.prototype,\n onResetClick: Function.prototype,\n enabled: false,\n hasUserEditedBody: false,\n isOAS3: false,\n }\n\n render() {\n const { onTryoutClick, onCancelClick, onResetClick, enabled, hasUserEditedBody, isOAS3 } = this.props\n\n const showReset = isOAS3 && hasUserEditedBody\n return (\n
    \n {\n enabled ? \n : \n\n }\n {\n showReset && \n }\n
    \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class VersionPragmaFilter extends React.PureComponent {\n static propTypes = {\n isSwagger2: PropTypes.bool.isRequired,\n isOAS3: PropTypes.bool.isRequired,\n bypass: PropTypes.bool,\n alsoShow: PropTypes.element,\n children: PropTypes.any,\n }\n\n static defaultProps = {\n alsoShow: null,\n children: null,\n bypass: false,\n }\n\n render() {\n const { bypass, isSwagger2, isOAS3, alsoShow } = this.props\n\n if(bypass) {\n return
    { this.props.children }
    \n }\n\n if(isSwagger2 && isOAS3) {\n return
    \n {alsoShow}\n
    \n
    \n

    Unable to render this definition

    \n

    swagger and openapi fields cannot be present in the same Swagger or OpenAPI definition. Please remove one of the fields.

    \n

    Supported version fields are swagger: {\"\\\"2.0\\\"\"} and those that match openapi: 3.0.n (for example, openapi: 3.0.0).

    \n
    \n
    \n
    \n }\n\n if(!isSwagger2 && !isOAS3) {\n return
    \n {alsoShow}\n
    \n
    \n

    Unable to render this definition

    \n

    The provided definition does not specify a valid version field.

    \n

    Please indicate a valid Swagger or OpenAPI version field. Supported version fields are swagger: {\"\\\"2.0\\\"\"} and those that match openapi: 3.0.n (for example, openapi: 3.0.0).

    \n
    \n
    \n
    \n }\n\n return
    { this.props.children }
    \n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst VersionStamp = ({ version }) => {\n return
     { version } 
    \n}\n\nVersionStamp.propTypes = {\n version: PropTypes.string.isRequired\n}\n\nexport default VersionStamp\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport const DeepLink = ({ enabled, path, text }) => {\n return (\n e.preventDefault() : null}\n href={enabled ? `#/${path}` : null}>\n {text}\n \n )\n}\nDeepLink.propTypes = {\n enabled: PropTypes.bool,\n isShown: PropTypes.bool,\n path: PropTypes.string,\n text: PropTypes.node\n}\n\nexport default DeepLink\n","import React from \"react\"\nconst SvgAssets = () =>\n
    \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n\n \n \n
    \n\nexport default SvgAssets\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class BaseLayout extends React.Component {\n static propTypes = {\n errSelectors: PropTypes.object.isRequired,\n errActions: PropTypes.object.isRequired,\n specSelectors: PropTypes.object.isRequired,\n oas3Selectors: PropTypes.object.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n }\n\n render() {\n const { errSelectors, specSelectors, getComponent } = this.props\n\n const SvgAssets = getComponent(\"SvgAssets\")\n const InfoContainer = getComponent(\"InfoContainer\", true)\n const VersionPragmaFilter = getComponent(\"VersionPragmaFilter\")\n const Operations = getComponent(\"operations\", true)\n const Models = getComponent(\"Models\", true)\n const Webhooks = getComponent(\"Webhooks\", true)\n const Row = getComponent(\"Row\")\n const Col = getComponent(\"Col\")\n const Errors = getComponent(\"errors\", true)\n\n const ServersContainer = getComponent(\"ServersContainer\", true)\n const SchemesContainer = getComponent(\"SchemesContainer\", true)\n const AuthorizeBtnContainer = getComponent(\"AuthorizeBtnContainer\", true)\n const FilterContainer = getComponent(\"FilterContainer\", true)\n const isSwagger2 = specSelectors.isSwagger2()\n const isOAS3 = specSelectors.isOAS3()\n const isOAS31 = specSelectors.isOAS31()\n\n const isSpecEmpty = !specSelectors.specStr()\n\n const loadingStatus = specSelectors.loadingStatus()\n\n let loadingMessage = null\n\n if (loadingStatus === \"loading\") {\n loadingMessage = (\n
    \n
    \n
    \n
    \n
    \n )\n }\n\n if (loadingStatus === \"failed\") {\n loadingMessage = (\n
    \n
    \n

    Failed to load API definition.

    \n \n
    \n
    \n )\n }\n\n if (loadingStatus === \"failedConfig\") {\n const lastErr = errSelectors.lastError()\n const lastErrMsg = lastErr ? lastErr.get(\"message\") : \"\"\n loadingMessage = (\n
    \n
    \n

    Failed to load remote configuration.

    \n

    {lastErrMsg}

    \n
    \n
    \n )\n }\n\n if (!loadingMessage && isSpecEmpty) {\n loadingMessage =

    No API definition provided.

    \n }\n\n if (loadingMessage) {\n return (\n
    \n
    {loadingMessage}
    \n
    \n )\n }\n\n const servers = specSelectors.servers()\n const schemes = specSelectors.schemes()\n\n const hasServers = servers && servers.size\n const hasSchemes = schemes && schemes.size\n const hasSecurityDefinitions = !!specSelectors.securityDefinitions()\n\n return (\n
    \n \n }\n >\n \n \n \n \n \n \n\n {hasServers || hasSchemes || hasSecurityDefinitions ? (\n
    \n \n {hasServers ? : null}\n {hasSchemes ? : null}\n {hasSecurityDefinitions ? : null}\n \n
    \n ) : null}\n\n \n\n \n \n \n \n \n\n {isOAS31 && (\n \n \n \n \n \n )}\n\n \n \n \n \n \n \n
    \n )\n }\n}\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_react_debounce_input_7ed3e068__[\"default\"] });","import React, { PureComponent, Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { List, fromJS } from \"immutable\"\nimport cx from \"classnames\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport DebounceInput from \"react-debounce-input\"\nimport { stringify } from \"core/utils\"\n\nconst noop = ()=> {}\nconst JsonSchemaPropShape = {\n getComponent: PropTypes.func.isRequired,\n value: PropTypes.any,\n onChange: PropTypes.func,\n keyName: PropTypes.any,\n fn: PropTypes.object.isRequired,\n schema: PropTypes.object,\n errors: ImPropTypes.list,\n required: PropTypes.bool,\n dispatchInitialValue: PropTypes.bool,\n description: PropTypes.any,\n disabled: PropTypes.bool,\n}\n\nconst JsonSchemaDefaultProps = {\n value: \"\",\n onChange: noop,\n schema: {},\n keyName: \"\",\n required: false,\n errors: List()\n}\n\nexport class JsonSchemaForm extends Component {\n\n static propTypes = JsonSchemaPropShape\n static defaultProps = JsonSchemaDefaultProps\n\n componentDidMount() {\n const { dispatchInitialValue, value, onChange } = this.props\n if(dispatchInitialValue) {\n onChange(value)\n } else if(dispatchInitialValue === false) {\n onChange(\"\")\n }\n }\n\n render() {\n let { schema, errors, value, onChange, getComponent, fn, disabled } = this.props\n const format = schema && schema.get ? schema.get(\"format\") : null\n const type = schema && schema.get ? schema.get(\"type\") : null\n\n let getComponentSilently = (name) => getComponent(name, false, { failSilently: true })\n let Comp = type ? format ?\n getComponentSilently(`JsonSchema_${type}_${format}`) :\n getComponentSilently(`JsonSchema_${type}`) :\n getComponent(\"JsonSchema_string\")\n if (!Comp) {\n Comp = getComponent(\"JsonSchema_string\")\n }\n return \n }\n}\n\nexport class JsonSchema_string extends Component {\n static propTypes = JsonSchemaPropShape\n static defaultProps = JsonSchemaDefaultProps\n onChange = (e) => {\n const value = this.props.schema && this.props.schema.get(\"type\") === \"file\" ? e.target.files[0] : e.target.value\n this.props.onChange(value, this.props.keyName)\n }\n onEnumChange = (val) => this.props.onChange(val)\n render() {\n let { getComponent, value, schema, errors, required, description, disabled } = this.props\n const enumValue = schema && schema.get ? schema.get(\"enum\") : null\n const format = schema && schema.get ? schema.get(\"format\") : null\n const type = schema && schema.get ? schema.get(\"type\") : null\n const schemaIn = schema && schema.get ? schema.get(\"in\") : null\n if (!value) {\n value = \"\" // value should not be null; this fixes a Debounce error\n }\n errors = errors.toJS ? errors.toJS() : []\n\n if ( enumValue ) {\n const Select = getComponent(\"Select\")\n return (\n )\n }\n else {\n return (\n \n )\n }\n }\n}\n\nexport class JsonSchema_array extends PureComponent {\n\n static propTypes = JsonSchemaPropShape\n static defaultProps = JsonSchemaDefaultProps\n\n constructor(props, context) {\n super(props, context)\n this.state = { value: valueOrEmptyList(props.value), schema: props.schema}\n }\n\n UNSAFE_componentWillReceiveProps(props) {\n const value = valueOrEmptyList(props.value)\n if(value !== this.state.value)\n this.setState({ value })\n\n if(props.schema !== this.state.schema)\n this.setState({ schema: props.schema })\n }\n\n onChange = () => {\n this.props.onChange(this.state.value)\n }\n\n onItemChange = (itemVal, i) => {\n this.setState(({ value }) => ({\n value: value.set(i, itemVal)\n }), this.onChange)\n }\n\n removeItem = (i) => {\n this.setState(({ value }) => ({\n value: value.delete(i)\n }), this.onChange)\n }\n\n addItem = () => {\n const { fn } = this.props\n let newValue = valueOrEmptyList(this.state.value)\n this.setState(() => ({\n value: newValue.push(fn.getSampleSchema(this.state.schema.get(\"items\"), false, {\n includeWriteOnly: true\n }))\n }), this.onChange)\n }\n\n onEnumChange = (value) => {\n this.setState(() => ({\n value: value\n }), this.onChange)\n }\n\n render() {\n let { getComponent, required, schema, errors, fn, disabled } = this.props\n\n errors = errors.toJS ? errors.toJS() : Array.isArray(errors) ? errors : []\n const arrayErrors = errors.filter(e => typeof e === \"string\")\n const needsRemoveError = errors.filter(e => e.needRemove !== undefined)\n .map(e => e.error)\n const value = this.state.value // expect Im List\n const shouldRenderValue =\n value && value.count && value.count() > 0 ? true : false\n const schemaItemsEnum = schema.getIn([\"items\", \"enum\"])\n const schemaItemsType = schema.getIn([\"items\", \"type\"])\n const schemaItemsFormat = schema.getIn([\"items\", \"format\"])\n const schemaItemsSchema = schema.get(\"items\")\n let ArrayItemsComponent\n let isArrayItemText = false\n let isArrayItemFile = (schemaItemsType === \"file\" || (schemaItemsType === \"string\" && schemaItemsFormat === \"binary\")) ? true : false\n if (schemaItemsType && schemaItemsFormat) {\n ArrayItemsComponent = getComponent(`JsonSchema_${schemaItemsType}_${schemaItemsFormat}`)\n } else if (schemaItemsType === \"boolean\" || schemaItemsType === \"array\" || schemaItemsType === \"object\") {\n ArrayItemsComponent = getComponent(`JsonSchema_${schemaItemsType}`)\n }\n // if ArrayItemsComponent not assigned or does not exist,\n // use default schemaItemsType === \"string\" & JsonSchemaArrayItemText component\n if (!ArrayItemsComponent && !isArrayItemFile) {\n isArrayItemText = true\n }\n\n if ( schemaItemsEnum ) {\n const Select = getComponent(\"Select\")\n return ()\n }\n}\n\nexport class JsonSchema_boolean extends Component {\n static propTypes = JsonSchemaPropShape\n static defaultProps = JsonSchemaDefaultProps\n\n onEnumChange = (val) => this.props.onChange(val)\n render() {\n let { getComponent, value, errors, schema, required, disabled } = this.props\n errors = errors.toJS ? errors.toJS() : []\n let enumValue = schema && schema.get ? schema.get(\"enum\") : null\n let allowEmptyValue = !enumValue || !required\n let booleanValue = !enumValue && [\"true\", \"false\"]\n const Select = getComponent(\"Select\")\n\n return (\n { schemes.valueSeq().map(\n ( scheme ) => \n ).toArray()}\n \n \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class SchemesContainer extends React.Component {\n\n static propTypes = {\n specActions: PropTypes.object.isRequired,\n specSelectors: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired\n }\n\n render () {\n const {specActions, specSelectors, getComponent} = this.props\n\n const currentScheme = specSelectors.operationScheme()\n const schemes = specSelectors.schemes()\n\n const Schemes = getComponent(\"schemes\")\n\n const schemesArePresent = schemes && schemes.size\n\n return schemesArePresent ? (\n \n ) : null\n }\n}\n","import React, { PureComponent, Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { List, fromJS, isImmutable } from \"immutable\"\nimport cx from \"classnames\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport DebounceInput from \"react-debounce-input\"\nimport { stringify } from \"core/utils\"\n\nconst noop = ()=> {}\nconst JsonSchemaPropShape = {\n getComponent: PropTypes.func.isRequired,\n value: PropTypes.any,\n onChange: PropTypes.func,\n keyName: PropTypes.any,\n fn: PropTypes.object.isRequired,\n schema: PropTypes.object,\n errors: ImPropTypes.list,\n required: PropTypes.bool,\n dispatchInitialValue: PropTypes.bool,\n description: PropTypes.any,\n disabled: PropTypes.bool,\n}\n\nconst JsonSchemaDefaultProps = {\n value: \"\",\n onChange: noop,\n schema: {},\n keyName: \"\",\n required: false,\n errors: List()\n}\n\nexport class JsonSchemaForm extends Component {\n\n static propTypes = JsonSchemaPropShape\n static defaultProps = JsonSchemaDefaultProps\n\n componentDidMount() {\n const { dispatchInitialValue, value, onChange } = this.props\n if(dispatchInitialValue) {\n onChange(value)\n } else if(dispatchInitialValue === false) {\n onChange(\"\")\n }\n }\n\n render() {\n let { schema, errors, value, onChange, getComponent, fn, disabled } = this.props\n const format = schema && schema.get ? schema.get(\"format\") : null\n const type = schema && schema.get ? schema.get(\"type\") : null\n const objectType = fn.getSchemaObjectType(schema)\n const isFileUploadIntended = fn.isFileUploadIntended(schema)\n\n let getComponentSilently = (name) => getComponent(name, false, { failSilently: true })\n let Comp = type ? format ?\n getComponentSilently(`JsonSchema_${type}_${format}`) :\n getComponentSilently(`JsonSchema_${type}`) :\n getComponent(\"JsonSchema_string\")\n\n if (!isFileUploadIntended && List.isList(type) && (objectType === \"array\" || objectType === \"object\")) {\n Comp = getComponent(\"JsonSchema_object\")\n }\n\n if (!Comp) {\n Comp = getComponent(\"JsonSchema_string\")\n }\n\n return \n }\n}\n\nexport class JsonSchema_string extends Component {\n static propTypes = JsonSchemaPropShape\n static defaultProps = JsonSchemaDefaultProps\n onChange = (e) => {\n const value = this.props.schema && this.props.schema.get(\"type\") === \"file\" ? e.target.files[0] : e.target.value\n this.props.onChange(value, this.props.keyName)\n }\n onEnumChange = (val) => this.props.onChange(val)\n render() {\n let { getComponent, value, schema, errors, required, description, disabled } = this.props\n const enumValue = schema && schema.get ? schema.get(\"enum\") : null\n const format = schema && schema.get ? schema.get(\"format\") : null\n const type = schema && schema.get ? schema.get(\"type\") : null\n const schemaIn = schema && schema.get ? schema.get(\"in\") : null\n if (!value) {\n value = \"\" // value should not be null; this fixes a Debounce error\n } else if (isImmutable(value) || typeof value === \"object\") {\n value = stringify(value)\n }\n\n errors = errors.toJS ? errors.toJS() : []\n\n if ( enumValue ) {\n const Select = getComponent(\"Select\")\n return (\n )\n }\n else {\n return (\n \n )\n }\n }\n}\n\nexport class JsonSchema_array extends PureComponent {\n\n static propTypes = JsonSchemaPropShape\n static defaultProps = JsonSchemaDefaultProps\n\n constructor(props, context) {\n super(props, context)\n this.state = { value: valueOrEmptyList(props.value), schema: props.schema}\n }\n\n UNSAFE_componentWillReceiveProps(props) {\n const value = valueOrEmptyList(props.value)\n if(value !== this.state.value)\n this.setState({ value })\n\n if(props.schema !== this.state.schema)\n this.setState({ schema: props.schema })\n }\n\n onChange = () => {\n this.props.onChange(this.state.value)\n }\n\n onItemChange = (itemVal, i) => {\n this.setState(({ value }) => ({\n value: value.set(i, itemVal)\n }), this.onChange)\n }\n\n removeItem = (i) => {\n this.setState(({ value }) => ({\n value: value.delete(i)\n }), this.onChange)\n }\n\n addItem = () => {\n const { fn } = this.props\n let newValue = valueOrEmptyList(this.state.value)\n this.setState(() => ({\n value: newValue.push(fn.getSampleSchema(this.state.schema.get(\"items\"), false, {\n includeWriteOnly: true\n }))\n }), this.onChange)\n }\n\n onEnumChange = (value) => {\n this.setState(() => ({\n value: value\n }), this.onChange)\n }\n\n render() {\n let { getComponent, required, schema, errors, fn, disabled } = this.props\n\n errors = errors.toJS ? errors.toJS() : Array.isArray(errors) ? errors : []\n const arrayErrors = errors.filter(e => typeof e === \"string\")\n const needsRemoveError = errors.filter(e => e.needRemove !== undefined)\n .map(e => e.error)\n const value = this.state.value // expect Im List\n const shouldRenderValue =\n !!(value && value.count && value.count() > 0)\n const schemaItemsEnum = schema.getIn([\"items\", \"enum\"])\n const schemaItems = schema.get(\"items\")\n const schemaItemsType = fn.getSchemaObjectType(schemaItems)\n const schemaItemsTypeLabel = fn.getSchemaObjectTypeLabel(schemaItems)\n const schemaItemsFormat = schema.getIn([\"items\", \"format\"])\n const schemaItemsSchema = schema.get(\"items\")\n let ArrayItemsComponent\n let isArrayItemText = false\n let isArrayItemFile = (schemaItemsType === \"file\" || (schemaItemsType === \"string\" && schemaItemsFormat === \"binary\"))\n if (schemaItemsType && schemaItemsFormat) {\n ArrayItemsComponent = getComponent(`JsonSchema_${schemaItemsType}_${schemaItemsFormat}`)\n } else if (schemaItemsType === \"boolean\" || schemaItemsType === \"array\" || schemaItemsType === \"object\") {\n ArrayItemsComponent = getComponent(`JsonSchema_${schemaItemsType}`)\n }\n\n if (List.isList(schemaItems?.get(\"type\")) && (schemaItemsType === \"array\" || schemaItemsType === \"object\")) {\n ArrayItemsComponent = getComponent(`JsonSchema_object`)\n }\n\n // if ArrayItemsComponent not assigned or does not exist,\n // use default schemaItemsType === \"string\" & JsonSchemaArrayItemText component\n if (!ArrayItemsComponent && !isArrayItemFile) {\n isArrayItemText = true\n }\n\n if ( schemaItemsEnum ) {\n const Select = getComponent(\"Select\")\n return ()\n }\n}\n\nexport class JsonSchema_boolean extends Component {\n static propTypes = JsonSchemaPropShape\n static defaultProps = JsonSchemaDefaultProps\n\n onEnumChange = (val) => this.props.onChange(val)\n render() {\n let { getComponent, value, errors, schema, required, disabled } = this.props\n errors = errors.toJS ? errors.toJS() : []\n let enumValue = schema && schema.get ? schema.get(\"enum\") : null\n let allowEmptyValue = !enumValue || !required\n let booleanValue = !enumValue && [\"true\", \"false\"]\n const Select = getComponent(\"Select\")\n\n return (\n \n }\n \n {\n errors.valueSeq().map( (error, key) => {\n return \n } )\n }\n \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class BasicAuth extends React.Component {\n static propTypes = {\n authorized: ImPropTypes.map,\n schema: ImPropTypes.map,\n getComponent: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n errSelectors: PropTypes.object.isRequired,\n authSelectors: PropTypes.object.isRequired\n }\n\n constructor(props, context) {\n super(props, context)\n let { schema, name } = this.props\n\n let value = this.getValue()\n let username = value.username\n\n this.state = {\n name: name,\n schema: schema,\n value: !username ? {} : {\n username: username\n }\n }\n }\n\n getValue () {\n let { authorized, name } = this.props\n\n return authorized && authorized.getIn([name, \"value\"]) || {}\n }\n\n onChange =(e) => {\n let { onChange } = this.props\n let { value, name } = e.target\n\n let newValue = this.state.value\n newValue[name] = value\n\n this.setState({ value: newValue })\n\n onChange(this.state)\n }\n\n render() {\n let { schema, getComponent, name, errSelectors, authSelectors } = this.props\n const Input = getComponent(\"Input\")\n const Row = getComponent(\"Row\")\n const Col = getComponent(\"Col\")\n const AuthError = getComponent(\"authError\")\n const JumpToPath = getComponent(\"JumpToPath\", true)\n const Markdown = getComponent(\"Markdown\", true)\n const path = authSelectors.selectAuthPath(name)\n let username = this.getValue().username\n let errors = errSelectors.allErrors().filter( err => err.get(\"authId\") === name)\n\n return (\n
    \n

    Basic authorization

    \n { username &&
    Authorized
    }\n \n \n \n \n \n {\n username ? { username } \n : \n \n \n }\n \n \n \n {\n username ? ****** \n : \n \n \n }\n \n {\n errors.valueSeq().map( (error, key) => {\n return \n } )\n }\n
    \n )\n }\n\n}\n","/**\n * @prettier\n */\n\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { stringify } from \"core/utils\"\nimport { Map } from \"immutable\"\n\nexport default function Example(props) {\n const { example, showValue, getComponent } = props\n\n const Markdown = getComponent(\"Markdown\", true)\n const HighlightCode = getComponent(\"HighlightCode\", true)\n\n if (!example || !Map.isMap(example)) return null\n\n return (\n
    \n {example.get(\"description\") ? (\n
    \n
    Example Description
    \n

    \n \n

    \n
    \n ) : null}\n {showValue && example.has(\"value\") ? (\n
    \n
    Example Value
    \n {stringify(example.get(\"value\"))}\n
    \n ) : null}\n
    \n )\n}\n\nExample.propTypes = {\n example: ImPropTypes.map.isRequired,\n showValue: PropTypes.bool,\n getComponent: PropTypes.func.isRequired,\n}\n","/**\n * @prettier\n */\n\nimport React from \"react\"\nimport { Map } from \"immutable\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class ExamplesSelect extends React.PureComponent {\n static propTypes = {\n examples: ImPropTypes.map.isRequired,\n onSelect: PropTypes.func,\n currentExampleKey: PropTypes.string,\n isModifiedValueAvailable: PropTypes.bool,\n isValueModified: PropTypes.bool,\n showLabels: PropTypes.bool,\n }\n\n static defaultProps = {\n examples: Map({}),\n onSelect: (...args) =>\n // eslint-disable-next-line no-console\n console.log(\n // FIXME: remove before merging to main...\n `DEBUG: ExamplesSelect was not given an onSelect callback`,\n ...args\n ),\n currentExampleKey: null,\n showLabels: true,\n }\n\n _onSelect = (key, { isSyntheticChange = false } = {}) => {\n if (typeof this.props.onSelect === \"function\") {\n this.props.onSelect(key, {\n isSyntheticChange,\n })\n }\n }\n\n _onDomSelect = (e) => {\n if (typeof this.props.onSelect === \"function\") {\n const element = e.target.selectedOptions[0]\n const key = element.getAttribute(\"value\")\n\n this._onSelect(key, {\n isSyntheticChange: false,\n })\n }\n }\n\n getCurrentExample = () => {\n const { examples, currentExampleKey } = this.props\n\n const currentExamplePerProps = examples.get(currentExampleKey)\n\n const firstExamplesKey = examples.keySeq().first()\n const firstExample = examples.get(firstExamplesKey)\n\n return currentExamplePerProps || firstExample || Map({})\n }\n\n componentDidMount() {\n // this is the not-so-great part of ExamplesSelect... here we're\n // artificially kicking off an onSelect event in order to set a default\n // value in state. the consumer has the option to avoid this by checking\n // `isSyntheticEvent`, but we should really be doing this in a selector.\n // TODO: clean this up\n // FIXME: should this only trigger if `currentExamplesKey` is nullish?\n const { onSelect, examples } = this.props\n\n if (typeof onSelect === \"function\") {\n const firstExample = examples.first()\n const firstExampleKey = examples.keyOf(firstExample)\n\n this._onSelect(firstExampleKey, {\n isSyntheticChange: true,\n })\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { currentExampleKey, examples } = nextProps\n if (examples !== this.props.examples && !examples.has(currentExampleKey)) {\n // examples have changed from under us, and the currentExampleKey is no longer\n // valid.\n const firstExample = examples.first()\n const firstExampleKey = examples.keyOf(firstExample)\n\n this._onSelect(firstExampleKey, {\n isSyntheticChange: true,\n })\n }\n }\n\n render() {\n const {\n examples,\n currentExampleKey,\n isValueModified,\n isModifiedValueAvailable,\n showLabels,\n } = this.props\n\n return (\n
    \n {showLabels ? (\n Examples: \n ) : null}\n \n {isModifiedValueAvailable ? (\n \n ) : null}\n {examples\n .map((example, exampleName) => {\n return (\n \n {(Map.isMap(example) && example.get(\"summary\")) ||\n exampleName}\n \n )\n })\n .valueSeq()}\n \n
    \n )\n }\n}\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport { Map, List } from \"immutable\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nimport { stringify } from \"core/utils\"\n\n// This stateful component lets us avoid writing competing values (user\n// modifications vs example values) into global state, and the mess that comes\n// with that: tracking which of the two values are currently used for\n// Try-It-Out, which example a modified value came from, etc...\n//\n// The solution here is to retain the last user-modified value in\n// ExamplesSelectValueRetainer's component state, so that our global state can stay\n// clean, always simply being the source of truth for what value should be both\n// displayed to the user and used as a value during request execution.\n//\n// This approach/tradeoff was chosen in order to encapsulate the particular\n// logic of Examples within the Examples component tree, and to avoid\n// regressions within our current implementation elsewhere (non-Examples\n// definitions, OpenAPI 2.0, etc). A future refactor to global state might make\n// this component unnecessary.\n//\n// TL;DR: this is not our usual approach, but the choice was made consciously.\n\n// Note that `currentNamespace` isn't currently used anywhere!\n\nconst stringifyUnlessList = (input) =>\n List.isList(input) ? input : stringify(input)\n\nexport default class ExamplesSelectValueRetainer extends React.PureComponent {\n static propTypes = {\n examples: ImPropTypes.map,\n onSelect: PropTypes.func,\n updateValue: PropTypes.func, // mechanism to update upstream value\n userHasEditedBody: PropTypes.bool,\n getComponent: PropTypes.func.isRequired,\n currentUserInputValue: PropTypes.any,\n currentKey: PropTypes.string,\n currentNamespace: PropTypes.string,\n setRetainRequestBodyValueFlag: PropTypes.func.isRequired,\n // (also proxies props for Examples)\n }\n\n static defaultProps = {\n userHasEditedBody: false,\n examples: Map({}),\n currentNamespace: \"__DEFAULT__NAMESPACE__\",\n setRetainRequestBodyValueFlag: () => {\n // NOOP\n },\n onSelect: (...args) =>\n // eslint-disable-next-line no-console\n console.log(\n \"ExamplesSelectValueRetainer: no `onSelect` function was provided\",\n ...args\n ),\n updateValue: (...args) =>\n // eslint-disable-next-line no-console\n console.log(\n \"ExamplesSelectValueRetainer: no `updateValue` function was provided\",\n ...args\n ),\n }\n\n constructor(props) {\n super(props)\n\n const valueFromExample = this._getCurrentExampleValue()\n\n this.state = {\n // user edited: last value that came from the world around us, and didn't\n // match the current example's value\n // internal: last value that came from user selecting an Example\n [props.currentNamespace]: Map({\n lastUserEditedValue: this.props.currentUserInputValue,\n lastDownstreamValue: valueFromExample,\n isModifiedValueSelected:\n // valueFromExample !== undefined &&\n this.props.userHasEditedBody ||\n this.props.currentUserInputValue !== valueFromExample,\n }),\n }\n }\n\n componentWillUnmount() {\n this.props.setRetainRequestBodyValueFlag(false)\n }\n\n _getStateForCurrentNamespace = () => {\n const { currentNamespace } = this.props\n\n return (this.state[currentNamespace] || Map()).toObject()\n }\n\n _setStateForCurrentNamespace = (obj) => {\n const { currentNamespace } = this.props\n\n return this._setStateForNamespace(currentNamespace, obj)\n }\n\n _setStateForNamespace = (namespace, obj) => {\n const oldStateForNamespace = this.state[namespace] || Map()\n const newStateForNamespace = oldStateForNamespace.merge(obj)\n return this.setState({\n [namespace]: newStateForNamespace,\n })\n }\n\n _isCurrentUserInputSameAsExampleValue = () => {\n const { currentUserInputValue } = this.props\n\n const valueFromExample = this._getCurrentExampleValue()\n\n return valueFromExample === currentUserInputValue\n }\n\n _getValueForExample = (exampleKey, props) => {\n // props are accepted so that this can be used in UNSAFE_componentWillReceiveProps,\n // which has access to `nextProps`\n const { examples } = props || this.props\n return stringifyUnlessList(\n (examples || Map({})).getIn([exampleKey, \"value\"])\n )\n }\n\n _getCurrentExampleValue = (props) => {\n // props are accepted so that this can be used in UNSAFE_componentWillReceiveProps,\n // which has access to `nextProps`\n const { currentKey } = props || this.props\n return this._getValueForExample(currentKey, props || this.props)\n }\n\n _onExamplesSelect = (key, { isSyntheticChange } = {}, ...otherArgs) => {\n const { onSelect, updateValue, currentUserInputValue, userHasEditedBody } =\n this.props\n const { lastUserEditedValue } = this._getStateForCurrentNamespace()\n\n const valueFromExample = this._getValueForExample(key)\n\n if (key === \"__MODIFIED__VALUE__\") {\n updateValue(stringifyUnlessList(lastUserEditedValue))\n return this._setStateForCurrentNamespace({\n isModifiedValueSelected: true,\n })\n }\n\n if (typeof onSelect === \"function\") {\n onSelect(key, { isSyntheticChange }, ...otherArgs)\n }\n\n this._setStateForCurrentNamespace({\n lastDownstreamValue: valueFromExample,\n isModifiedValueSelected:\n (isSyntheticChange && userHasEditedBody) ||\n (!!currentUserInputValue && currentUserInputValue !== valueFromExample),\n })\n\n // we never want to send up value updates from synthetic changes\n if (isSyntheticChange) return\n\n if (typeof updateValue === \"function\") {\n updateValue(stringifyUnlessList(valueFromExample))\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n // update `lastUserEditedValue` as new currentUserInput values come in\n\n const {\n currentUserInputValue: newValue,\n examples,\n onSelect,\n userHasEditedBody,\n } = nextProps\n\n const { lastUserEditedValue, lastDownstreamValue } =\n this._getStateForCurrentNamespace()\n\n const valueFromCurrentExample = this._getValueForExample(\n nextProps.currentKey,\n nextProps\n )\n\n const examplesMatchingNewValue = examples.filter(\n (example) =>\n Map.isMap(example) &&\n (example.get(\"value\") === newValue ||\n // sometimes data is stored as a string (e.g. in Request Bodies), so\n // let's check against a stringified version of our example too\n stringify(example.get(\"value\")) === newValue)\n )\n\n if (examplesMatchingNewValue.size) {\n let key\n if (examplesMatchingNewValue.has(nextProps.currentKey)) {\n key = nextProps.currentKey\n } else {\n key = examplesMatchingNewValue.keySeq().first()\n }\n onSelect(key, {\n isSyntheticChange: true,\n })\n } else if (\n newValue !== this.props.currentUserInputValue && // value has changed\n newValue !== lastUserEditedValue && // value isn't already tracked\n newValue !== lastDownstreamValue // value isn't what we've seen on the other side\n ) {\n this.props.setRetainRequestBodyValueFlag(true)\n this._setStateForNamespace(nextProps.currentNamespace, {\n lastUserEditedValue: nextProps.currentUserInputValue,\n isModifiedValueSelected:\n userHasEditedBody || newValue !== valueFromCurrentExample,\n })\n }\n }\n\n render() {\n const {\n currentUserInputValue,\n examples,\n currentKey,\n getComponent,\n userHasEditedBody,\n } = this.props\n const {\n lastDownstreamValue,\n lastUserEditedValue,\n isModifiedValueSelected,\n } = this._getStateForCurrentNamespace()\n\n const ExamplesSelect = getComponent(\"ExamplesSelect\")\n\n return (\n \n )\n }\n}\n","import parseUrl from \"url-parse\"\nimport { List } from \"immutable\"\nimport { btoa, generateCodeVerifier, createCodeChallenge } from \"core/utils\"\nimport { sanitizeUrl } from \"core/utils/url\"\n\nexport default function authorize ( { auth, authActions, errActions, configs, authConfigs={}, currentServer } ) {\n let { schema, scopes, name, clientId } = auth\n let flow = schema.get(\"flow\")\n let query = []\n\n switch (flow) {\n case \"password\":\n authActions.authorizePassword(auth)\n return\n\n case \"application\":\n authActions.authorizeApplication(auth)\n return\n\n case \"accessCode\":\n query.push(\"response_type=code\")\n break\n\n case \"implicit\":\n query.push(\"response_type=token\")\n break\n\n case \"clientCredentials\":\n case \"client_credentials\":\n // OAS3\n authActions.authorizeApplication(auth)\n return\n\n case \"authorizationCode\":\n case \"authorization_code\":\n // OAS3\n query.push(\"response_type=code\")\n break\n }\n\n if (typeof clientId === \"string\") {\n query.push(\"client_id=\" + encodeURIComponent(clientId))\n }\n\n let redirectUrl = configs.oauth2RedirectUrl\n\n // todo move to parser\n if (typeof redirectUrl === \"undefined\") {\n errActions.newAuthErr( {\n authId: name,\n source: \"validation\",\n level: \"error\",\n message: \"oauth2RedirectUrl configuration is not passed. Oauth2 authorization cannot be performed.\"\n })\n return\n }\n query.push(\"redirect_uri=\" + encodeURIComponent(redirectUrl))\n\n let scopesArray = []\n if (Array.isArray(scopes)) {\n scopesArray = scopes\n } else if (List.isList(scopes)) {\n scopesArray = scopes.toArray()\n }\n\n if (scopesArray.length > 0) {\n let scopeSeparator = authConfigs.scopeSeparator || \" \"\n\n query.push(\"scope=\" + encodeURIComponent(scopesArray.join(scopeSeparator)))\n }\n\n let state = btoa(new Date())\n\n query.push(\"state=\" + encodeURIComponent(state))\n\n if (typeof authConfigs.realm !== \"undefined\") {\n query.push(\"realm=\" + encodeURIComponent(authConfigs.realm))\n }\n\n if ((flow === \"authorizationCode\" || flow === \"authorization_code\" || flow === \"accessCode\") && authConfigs.usePkceWithAuthorizationCodeGrant) {\n const codeVerifier = generateCodeVerifier()\n const codeChallenge = createCodeChallenge(codeVerifier)\n\n query.push(\"code_challenge=\" + codeChallenge)\n query.push(\"code_challenge_method=S256\")\n\n // storing the Code Verifier so it can be sent to the token endpoint\n // when exchanging the Authorization Code for an Access Token\n auth.codeVerifier = codeVerifier\n }\n\n let { additionalQueryStringParams } = authConfigs\n\n for (let key in additionalQueryStringParams) {\n if (typeof additionalQueryStringParams[key] !== \"undefined\") {\n query.push([key, additionalQueryStringParams[key]].map(encodeURIComponent).join(\"=\"))\n }\n }\n\n const authorizationUrl = schema.get(\"authorizationUrl\")\n let sanitizedAuthorizationUrl\n if (currentServer) {\n // OpenAPI 3\n sanitizedAuthorizationUrl = parseUrl(\n sanitizeUrl(authorizationUrl),\n currentServer,\n true\n ).toString()\n } else {\n sanitizedAuthorizationUrl = sanitizeUrl(authorizationUrl)\n }\n let url = [sanitizedAuthorizationUrl, query.join(\"&\")].join(\n typeof authorizationUrl === \"string\" && !authorizationUrl.includes(\"?\")\n ? \"?\"\n : \"&\"\n )\n\n // pass action authorizeOauth2 and authentication data through window\n // to authorize with oauth2\n\n let callback\n if (flow === \"implicit\") {\n callback = authActions.preAuthorizeImplicit\n } else if (authConfigs.useBasicAuthenticationWithAccessCodeGrant) {\n callback = authActions.authorizeAccessCodeWithBasicAuthentication\n } else {\n callback = authActions.authorizeAccessCodeWithFormParams\n }\n\n authActions.authPopup(url, {\n auth: auth,\n state: state,\n redirectUrl: redirectUrl,\n callback: callback,\n errCb: errActions.newAuthErr\n })\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport oauth2Authorize from \"core/oauth2-authorize\"\n\nexport default class Oauth2 extends React.Component {\n static propTypes = {\n name: PropTypes.string,\n authorized: PropTypes.object,\n getComponent: PropTypes.func.isRequired,\n schema: PropTypes.object.isRequired,\n authSelectors: PropTypes.object.isRequired,\n authActions: PropTypes.object.isRequired,\n errSelectors: PropTypes.object.isRequired,\n oas3Selectors: PropTypes.object.isRequired,\n specSelectors: PropTypes.object.isRequired,\n errActions: PropTypes.object.isRequired,\n getConfigs: PropTypes.any\n }\n\n constructor(props, context) {\n super(props, context)\n let { name, schema, authorized, authSelectors } = this.props\n let auth = authorized && authorized.get(name)\n let authConfigs = authSelectors.getConfigs() || {}\n let username = auth && auth.get(\"username\") || \"\"\n let clientId = auth && auth.get(\"clientId\") || authConfigs.clientId || \"\"\n let clientSecret = auth && auth.get(\"clientSecret\") || authConfigs.clientSecret || \"\"\n let passwordType = auth && auth.get(\"passwordType\") || \"basic\"\n let scopes = auth && auth.get(\"scopes\") || authConfigs.scopes || []\n if (typeof scopes === \"string\") {\n scopes = scopes.split(authConfigs.scopeSeparator || \" \")\n }\n\n this.state = {\n appName: authConfigs.appName,\n name: name,\n schema: schema,\n scopes: scopes,\n clientId: clientId,\n clientSecret: clientSecret,\n username: username,\n password: \"\",\n passwordType: passwordType\n }\n }\n\n close = (e) => {\n e.preventDefault()\n let { authActions } = this.props\n\n authActions.showDefinitions(false)\n }\n\n authorize =() => {\n let { authActions, errActions, getConfigs, authSelectors, oas3Selectors } = this.props\n let configs = getConfigs()\n let authConfigs = authSelectors.getConfigs()\n\n errActions.clear({authId: name,type: \"auth\", source: \"auth\"})\n oauth2Authorize({\n auth: this.state,\n currentServer: oas3Selectors.serverEffectiveValue(oas3Selectors.selectedServer()),\n authActions,\n errActions,\n configs,\n authConfigs\n })\n }\n\n onScopeChange =(e) => {\n let { target } = e\n let { checked } = target\n let scope = target.dataset.value\n\n if ( checked && this.state.scopes.indexOf(scope) === -1 ) {\n let newScopes = this.state.scopes.concat([scope])\n this.setState({ scopes: newScopes })\n } else if ( !checked && this.state.scopes.indexOf(scope) > -1) {\n this.setState({ scopes: this.state.scopes.filter((val) => val !== scope) })\n }\n }\n\n onInputChange =(e) => {\n let { target : { dataset : { name }, value } } = e\n let state = {\n [name]: value\n }\n\n this.setState(state)\n }\n\n selectScopes =(e) => {\n if (e.target.dataset.all) {\n this.setState({\n scopes: Array.from((this.props.schema.get(\"allowedScopes\") || this.props.schema.get(\"scopes\")).keys())\n })\n } else {\n this.setState({ scopes: [] })\n }\n }\n\n logout =(e) => {\n e.preventDefault()\n let { authActions, errActions, name } = this.props\n\n errActions.clear({authId: name, type: \"auth\", source: \"auth\"})\n authActions.logoutWithPersistOption([ name ])\n }\n\n render() {\n let {\n schema, getComponent, authSelectors, errSelectors, name, specSelectors\n } = this.props\n const Input = getComponent(\"Input\")\n const Row = getComponent(\"Row\")\n const Col = getComponent(\"Col\")\n const Button = getComponent(\"Button\")\n const AuthError = getComponent(\"authError\")\n const JumpToPath = getComponent(\"JumpToPath\", true)\n const Markdown = getComponent(\"Markdown\", true)\n const InitializedInput = getComponent(\"InitializedInput\")\n\n const { isOAS3 } = specSelectors\n\n let oidcUrl = isOAS3() ? schema.get(\"openIdConnectUrl\") : null\n\n // Auth type consts\n const AUTH_FLOW_IMPLICIT = \"implicit\"\n const AUTH_FLOW_PASSWORD = \"password\"\n const AUTH_FLOW_ACCESS_CODE = isOAS3() ? (oidcUrl ? \"authorization_code\" : \"authorizationCode\") : \"accessCode\"\n const AUTH_FLOW_APPLICATION = isOAS3() ? (oidcUrl ? \"client_credentials\" : \"clientCredentials\") : \"application\"\n\n const path = authSelectors.selectAuthPath(name)\n\n let authConfigs = authSelectors.getConfigs() || {}\n let isPkceCodeGrant = !!authConfigs.usePkceWithAuthorizationCodeGrant\n\n let flow = schema.get(\"flow\")\n let flowToDisplay = flow === AUTH_FLOW_ACCESS_CODE && isPkceCodeGrant ? flow + \" with PKCE\" : flow\n let scopes = schema.get(\"allowedScopes\") || schema.get(\"scopes\")\n let authorizedAuth = authSelectors.authorized().get(name)\n let isAuthorized = !!authorizedAuth\n let errors = errSelectors.allErrors().filter( err => err.get(\"authId\") === name)\n let isValid = !errors.filter( err => err.get(\"source\") === \"validation\").size\n let description = schema.get(\"description\")\n\n return (\n
    \n

    {name} (OAuth2, { flowToDisplay })

    \n { !this.state.appName ? null :
    Application: { this.state.appName }
    }\n { description && }\n\n { isAuthorized &&
    Authorized
    }\n\n { oidcUrl &&

    OpenID Connect URL: { oidcUrl }

    }\n { ( flow === AUTH_FLOW_IMPLICIT || flow === AUTH_FLOW_ACCESS_CODE ) &&

    Authorization URL: { schema.get(\"authorizationUrl\") }

    }\n { ( flow === AUTH_FLOW_PASSWORD || flow === AUTH_FLOW_ACCESS_CODE || flow === AUTH_FLOW_APPLICATION ) &&

    Token URL: { schema.get(\"tokenUrl\") }

    }\n

    Flow: { flowToDisplay }

    \n\n {\n flow !== AUTH_FLOW_PASSWORD ? null\n : \n \n \n {\n isAuthorized ? { this.state.username } \n : \n \n \n }\n \n {\n\n }\n \n \n {\n isAuthorized ? ****** \n : \n \n \n }\n \n \n \n {\n isAuthorized ? { this.state.passwordType } \n : \n \n \n }\n \n \n }\n {\n ( flow === AUTH_FLOW_APPLICATION || flow === AUTH_FLOW_IMPLICIT || flow === AUTH_FLOW_ACCESS_CODE || flow === AUTH_FLOW_PASSWORD ) &&\n ( !isAuthorized || isAuthorized && this.state.clientId) && \n \n {\n isAuthorized ? ****** \n : \n \n \n }\n \n }\n\n {\n ( (flow === AUTH_FLOW_APPLICATION || flow === AUTH_FLOW_ACCESS_CODE || flow === AUTH_FLOW_PASSWORD) && \n \n {\n isAuthorized ? ****** \n : \n \n \n }\n\n \n )}\n\n {\n !isAuthorized && scopes && scopes.size ?
    \n

    \n Scopes:\n select all\n select none\n

    \n { scopes.map((description, name) => {\n return (\n \n
    \n \n \n
    \n
    \n )\n }).valueSeq().toArray()\n }\n
    : null\n }\n\n {\n errors.valueSeq().map( (error, key) => {\n return \n } )\n }\n
    \n { isValid &&\n ( isAuthorized ? \n : \n )\n }\n \n
    \n\n
    \n )\n }\n}\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class Clear extends Component {\n\n onClick =() => {\n let { specActions, path, method } = this.props\n specActions.clearResponse( path, method )\n specActions.clearRequest( path, method )\n }\n\n render(){\n return (\n \n )\n }\n\n static propTypes = {\n specActions: PropTypes.object.isRequired,\n path: PropTypes.string.isRequired,\n method: PropTypes.string.isRequired,\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nconst Headers = ( { headers } )=>{\n return (\n
    \n
    Response headers
    \n
    {headers}
    \n
    )\n}\nHeaders.propTypes = {\n headers: PropTypes.array.isRequired\n}\n\nconst Duration = ( { duration } ) => {\n return (\n
    \n
    Request duration
    \n
    {duration} ms
    \n
    \n )\n}\nDuration.propTypes = {\n duration: PropTypes.number.isRequired\n}\n\n\nexport default class LiveResponse extends React.Component {\n static propTypes = {\n response: ImPropTypes.map,\n path: PropTypes.string.isRequired,\n method: PropTypes.string.isRequired,\n displayRequestDuration: PropTypes.bool.isRequired,\n specSelectors: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired\n }\n\n shouldComponentUpdate(nextProps) {\n // BUG: props.response is always coming back as a new Immutable instance\n // same issue as responses.jsx (tryItOutResponse)\n return this.props.response !== nextProps.response\n || this.props.path !== nextProps.path\n || this.props.method !== nextProps.method\n || this.props.displayRequestDuration !== nextProps.displayRequestDuration\n }\n\n render() {\n const { response, getComponent, getConfigs, displayRequestDuration, specSelectors, path, method } = this.props\n const { showMutatedRequest, requestSnippetsEnabled } = getConfigs()\n\n const curlRequest = showMutatedRequest ? specSelectors.mutatedRequestFor(path, method) : specSelectors.requestFor(path, method)\n const status = response.get(\"status\")\n const url = curlRequest.get(\"url\")\n const headers = response.get(\"headers\").toJS()\n const notDocumented = response.get(\"notDocumented\")\n const isError = response.get(\"error\")\n const body = response.get(\"text\")\n const duration = response.get(\"duration\")\n const headersKeys = Object.keys(headers)\n const contentType = headers[\"content-type\"] || headers[\"Content-Type\"]\n\n const ResponseBody = getComponent(\"responseBody\")\n const returnObject = headersKeys.map(key => {\n var joinedHeaders = Array.isArray(headers[key]) ? headers[key].join() : headers[key]\n return {key}: {joinedHeaders} \n })\n const hasHeaders = returnObject.length !== 0\n const Markdown = getComponent(\"Markdown\", true)\n const RequestSnippets = getComponent(\"RequestSnippets\", true)\n const Curl = getComponent(\"curl\", true)\n\n return (\n
    \n { curlRequest && requestSnippetsEnabled \n ? \n : \n }\n { url &&
    \n
    \n

    Request URL

    \n
    {url}
    \n
    \n
    \n }\n

    Server response

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    CodeDetails
    \n { status }\n {\n notDocumented ?
    \n Undocumented \n
    \n : null\n }\n
    \n {\n isError ? \n : null\n }\n {\n body ? \n : null\n }\n {\n hasHeaders ? : null\n }\n {\n displayRequestDuration && duration ? : null\n }\n
    \n
    \n )\n }\n}\n","import React from \"react\"\nimport URL from \"url-parse\"\n\nimport PropTypes from \"prop-types\"\nimport { requiresValidationURL } from \"core/utils\"\nimport { sanitizeUrl } from \"core/utils/url\"\nimport win from \"core/window\"\n\nexport default class OnlineValidatorBadge extends React.Component {\n static propTypes = {\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired\n }\n\n constructor(props, context) {\n super(props, context)\n let { getConfigs } = props\n let { validatorUrl } = getConfigs()\n this.state = {\n url: this.getDefinitionUrl(),\n validatorUrl: validatorUrl === undefined ? \"https://validator.swagger.io/validator\" : validatorUrl\n }\n }\n\n getDefinitionUrl = () => {\n // TODO: test this behavior by stubbing `window.location` in an Enzyme/JSDom env\n let { specSelectors } = this.props\n\n const urlObject = new URL(specSelectors.url(), win.location)\n return urlObject.toString()\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n let { getConfigs } = nextProps\n let { validatorUrl } = getConfigs()\n\n this.setState({\n url: this.getDefinitionUrl(),\n validatorUrl: validatorUrl === undefined ? \"https://validator.swagger.io/validator\" : validatorUrl\n })\n }\n\n render() {\n let { getConfigs } = this.props\n let { spec } = getConfigs()\n\n let sanitizedValidatorUrl = sanitizeUrl(this.state.validatorUrl)\n\n if ( typeof spec === \"object\" && Object.keys(spec).length) return null\n\n if (!this.state.url || !requiresValidationURL(this.state.validatorUrl)\n || !requiresValidationURL(this.state.url)) {\n return null\n }\n\n return (\n \n \n \n )\n }\n}\n\n\nclass ValidatorImage extends React.Component {\n static propTypes = {\n src: PropTypes.string,\n alt: PropTypes.string\n }\n\n constructor(props) {\n super(props)\n this.state = {\n loaded: false,\n error: false\n }\n }\n\n componentDidMount() {\n const img = new Image()\n img.onload = () => {\n this.setState({\n loaded: true\n })\n }\n img.onerror = () => {\n this.setState({\n error: true\n })\n }\n img.src = this.props.src\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.src !== this.props.src) {\n const img = new Image()\n img.onload = () => {\n this.setState({\n loaded: true\n })\n }\n img.onerror = () => {\n this.setState({\n error: true\n })\n }\n img.src = nextProps.src\n }\n }\n\n render() {\n if (this.state.error) {\n return {\"Error\"}\n } else if (!this.state.loaded) {\n return null\n }\n return {this.props.alt}\n }\n}\n","/**\n * @prettier\n */\nimport React, {\n useMemo,\n useRef,\n useState,\n useEffect,\n useLayoutEffect,\n} from \"react\"\nimport PropTypes from \"prop-types\"\nimport { useWindowVirtualizer, useVirtualizer } from \"@tanstack/react-virtual\"\nimport { opId } from \"swagger-client/es/helpers\"\nimport {\n VIRTUALIZE_OPERATIONS_THRESHOLD,\n VIRTUALIZE_OPERATIONS_TAG_ESTIMATE_SIZE,\n VIRTUALIZE_OPERATIONS_ESTIMATE_SIZE,\n VIRTUALIZE_OPERATIONS_OVERSCAN,\n} from \"core/utils/virtualization\"\n\nconst findScrollParent = (el) => {\n let node = el.parentElement\n\n while (node && node !== document.documentElement) {\n const { overflow, overflowY } = getComputedStyle(node)\n\n if (/(auto|scroll)/.test(overflow + overflowY)) return node\n\n node = node.parentElement\n }\n\n return document.documentElement\n}\n\nconst Operations = ({\n specSelectors,\n getComponent,\n oas3Selectors,\n layoutSelectors,\n layoutActions,\n getConfigs,\n}) => {\n const taggedOps = specSelectors.taggedOperations()\n const validOperationMethods = specSelectors.validOperationMethods()\n const { docExpansion } = getConfigs()\n\n const tagDefaultOpen = docExpansion === \"full\" || docExpansion === \"list\"\n\n // Derive a key for flatItems useMemo that changes when any tag is expanded/collapsed\n const expandedTagsState = taggedOps\n .keySeq()\n .map((tag) =>\n layoutSelectors.isShown([\"operations-tag\", tag], tagDefaultOpen)\n )\n .join(\",\")\n\n const flatItems = useMemo(() => {\n const items = []\n\n taggedOps.entrySeq().forEach(([tag, tagObj]) => {\n items.push({ type: \"tag\", tag, tagObj })\n\n const tagOpen = layoutSelectors.isShown(\n [\"operations-tag\", tag],\n tagDefaultOpen\n )\n\n if (!tagOpen) return\n\n tagObj.get(\"operations\").forEach((op) => {\n const method = op.get(\"method\")\n\n if (validOperationMethods.indexOf(method) === -1) return\n\n const path = op.get(\"path\")\n const operationId =\n op.getIn([\"operation\", \"__originalOperationId\"]) ||\n op.getIn([\"operation\", \"operationId\"]) ||\n opId(op.get(\"operation\"), path, method) ||\n op.get(\"id\")\n\n items.push({\n type: \"operation\",\n tag,\n op,\n method,\n path,\n specPath: op.get(\"specPath\"),\n operationId,\n })\n })\n })\n\n return items\n }, [taggedOps, validOperationMethods, tagDefaultOpen, expandedTagsState])\n\n const isVirtualized = flatItems.length >= VIRTUALIZE_OPERATIONS_THRESHOLD\n\n const [containerEl, setContainerEl] = useState(null)\n const [scrollMargin, setScrollMargin] = useState(0)\n const listRef = useRef(null)\n\n useLayoutEffect(() => {\n if (!isVirtualized) return\n\n const el = listRef.current\n\n if (!el) return\n\n const container = findScrollParent(el)\n const isWindowScroll = container === document.documentElement\n\n if (!isWindowScroll) {\n setContainerEl(container)\n }\n\n const measure = () => {\n setScrollMargin(el.offsetTop)\n }\n\n let raf = requestAnimationFrame(measure)\n\n const onResize = () => {\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(measure)\n }\n\n window.addEventListener(\"resize\", onResize)\n\n return () => {\n cancelAnimationFrame(raf)\n window.removeEventListener(\"resize\", onResize)\n }\n }, [isVirtualized])\n\n const isWindowScroll = containerEl === null\n\n const windowVirtualizer = useWindowVirtualizer({\n enabled: isWindowScroll,\n count: isWindowScroll && isVirtualized ? flatItems.length : 0,\n estimateSize: (i) =>\n flatItems[i]?.type === \"tag\"\n ? VIRTUALIZE_OPERATIONS_TAG_ESTIMATE_SIZE\n : VIRTUALIZE_OPERATIONS_ESTIMATE_SIZE,\n overscan: VIRTUALIZE_OPERATIONS_OVERSCAN,\n scrollMargin,\n getItemKey: (index) => {\n const item = flatItems[index]\n return item.type === \"tag\"\n ? `tag-${item.tag}`\n : `op-${item.tag}-${item.path}-${item.method}`\n },\n })\n\n const containerVirtualizer = useVirtualizer({\n enabled: !isWindowScroll,\n count: !isWindowScroll && isVirtualized ? flatItems.length : 0,\n estimateSize: (i) =>\n flatItems[i]?.type === \"tag\"\n ? VIRTUALIZE_OPERATIONS_TAG_ESTIMATE_SIZE\n : VIRTUALIZE_OPERATIONS_ESTIMATE_SIZE,\n overscan: VIRTUALIZE_OPERATIONS_OVERSCAN,\n getScrollElement: () => containerEl,\n scrollMargin,\n getItemKey: (index) => {\n const item = flatItems[index]\n return item.type === \"tag\"\n ? `tag-${item.tag}`\n : `op-${item.tag}-${item.path}-${item.method}`\n },\n })\n\n const virtualizer = isWindowScroll ? windowVirtualizer : containerVirtualizer\n\n const pendingVirtualizedOperationScroll =\n layoutSelectors.getScrollToVirtualizedOperation()\n\n useEffect(() => {\n if (!pendingVirtualizedOperationScroll || !isVirtualized) return\n\n const [type, tag, operationId] = pendingVirtualizedOperationScroll.toJS()\n\n let idx = -1\n\n const tagsToMatch = [tag, tag?.replaceAll(\"_\", \" \")].filter(Boolean)\n\n if (type === \"operations\") {\n idx = flatItems.findIndex(\n (item) =>\n item.type === \"operation\" &&\n tagsToMatch.includes(item.tag) &&\n item.operationId === operationId\n )\n } else if (type === \"operations-tag\") {\n idx = flatItems.findIndex(\n (item) => item.type === \"tag\" && tagsToMatch.includes(item.tag)\n )\n }\n\n if (idx !== -1) {\n virtualizer.scrollToIndex(idx, { align: \"start\" })\n }\n\n layoutActions.clearScrollToVirtualizedOperation()\n layoutActions.clearScrollTo()\n }, [\n pendingVirtualizedOperationScroll,\n flatItems,\n virtualizer,\n isVirtualized,\n layoutActions,\n ])\n\n if (taggedOps.size === 0) {\n return

    No operations defined in spec!

    \n }\n\n const OperationContainer = getComponent(\"OperationContainer\", true)\n const OperationTag = getComponent(\"OperationTag\")\n\n if (!isVirtualized) {\n return (\n
    \n {taggedOps\n .map((tagObj, tag) => (\n \n
    \n {tagObj\n .get(\"operations\")\n .map((op) => {\n const path = op.get(\"path\")\n const method = op.get(\"method\")\n const specPath = op.get(\"specPath\")\n if (validOperationMethods.indexOf(method) === -1) {\n return null\n }\n return (\n \n )\n })\n .toArray()}\n
    \n \n ))\n .valueSeq()\n .toArray()}\n
    \n )\n }\n\n const vItems = virtualizer.getVirtualItems()\n const offset = virtualizer.options.scrollMargin ?? 0\n const paddingTop = vItems.length > 0 ? vItems[0].start - offset : 0\n const paddingBottom =\n virtualizer.getTotalSize() -\n (vItems.length > 0 ? vItems.at(-1).end - offset : 0)\n\n return (\n
    \n \n {vItems.map((vItem) => {\n const item = flatItems[vItem.index]\n\n return (\n \n {item.type === \"tag\" ? (\n \n ) : (\n \n )}\n
    \n )\n })}\n \n \n )\n}\n\nOperations.propTypes = {\n specSelectors: PropTypes.object.isRequired,\n specActions: PropTypes.object.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n oas3Selectors: PropTypes.object.isRequired,\n layoutSelectors: PropTypes.object.isRequired,\n layoutActions: PropTypes.object.isRequired,\n authActions: PropTypes.object.isRequired,\n authSelectors: PropTypes.object.isRequired,\n getConfigs: PropTypes.func.isRequired,\n fn: PropTypes.object.isRequired,\n}\n\nexport default Operations\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { fromJS } from \"immutable\"\nimport { createDeepLinkPath, escapeDeepLinkPath, isFunc } from \"core/utils\"\nimport { safeBuildUrl, sanitizeUrl } from \"core/utils/url\"\n\n/* eslint-disable react/jsx-no-bind */\n\nexport default class OperationTag extends React.Component {\n\n static defaultProps = {\n tagObj: fromJS({}),\n tag: \"\",\n }\n\n static propTypes = {\n tagObj: ImPropTypes.map.isRequired,\n tag: PropTypes.string.isRequired,\n\n oas3Selectors: PropTypes.func.isRequired,\n layoutSelectors: PropTypes.object.isRequired,\n layoutActions: PropTypes.object.isRequired,\n\n getConfigs: PropTypes.func.isRequired,\n getComponent: PropTypes.func.isRequired,\n\n specUrl: PropTypes.string.isRequired,\n\n children: PropTypes.element,\n }\n\n render() {\n const {\n tagObj,\n tag,\n children,\n oas3Selectors,\n layoutSelectors,\n layoutActions,\n getConfigs,\n getComponent,\n specUrl,\n } = this.props\n\n let {\n docExpansion,\n deepLinking,\n } = getConfigs()\n\n const Collapse = getComponent(\"Collapse\")\n const Markdown = getComponent(\"Markdown\", true)\n const DeepLink = getComponent(\"DeepLink\")\n const Link = getComponent(\"Link\")\n const ArrowUpIcon = getComponent(\"ArrowUpIcon\")\n const ArrowDownIcon = getComponent(\"ArrowDownIcon\")\n\n let tagDescription = tagObj.getIn([\"tagDetails\", \"description\"], null)\n let tagExternalDocsDescription = tagObj.getIn([\"tagDetails\", \"externalDocs\", \"description\"])\n let rawTagExternalDocsUrl = tagObj.getIn([\"tagDetails\", \"externalDocs\", \"url\"])\n let tagExternalDocsUrl\n if (isFunc(oas3Selectors) && isFunc(oas3Selectors.selectedServer)) {\n tagExternalDocsUrl = safeBuildUrl(rawTagExternalDocsUrl, specUrl, { selectedServer: oas3Selectors.selectedServer() })\n } else {\n tagExternalDocsUrl = rawTagExternalDocsUrl\n }\n\n let isShownKey = [\"operations-tag\", tag]\n let showTag = layoutSelectors.isShown(isShownKey, docExpansion === \"full\" || docExpansion === \"list\")\n\n const header = (\n layoutActions.show(isShownKey, !showTag)}\n className={!tagDescription ? \"opblock-tag no-desc\" : \"opblock-tag\"}\n id={isShownKey.map(v => escapeDeepLinkPath(v)).join(\"-\")}\n data-tag={tag}\n data-is-open={showTag}\n >\n \n {!tagDescription ? :\n \n \n \n }\n\n {!tagExternalDocsUrl ? null :\n
    \n \n e.stopPropagation()}\n target=\"_blank\"\n >{tagExternalDocsDescription || tagExternalDocsUrl}\n \n
    \n }\n\n\n layoutActions.show(isShownKey, !showTag)}>\n\n {showTag ? : }\n \n \n )\n\n // Virtualized path — render only the header\n if (children == null) {\n return header\n }\n\n return (\n
    \n {header}\n \n {children}\n \n
    \n )\n }\n}\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { getExtensions, escapeDeepLinkPath, getList } from \"core/utils\"\nimport { safeBuildUrl, sanitizeUrl } from \"core/utils/url\"\nimport { Iterable, List } from \"immutable\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nimport RollingLoadSVG from \"core/assets/rolling-load.svg\"\nimport { OPERATION_METHODS } from \"core/utils/operation-methods\"\n\nexport default class Operation extends PureComponent {\n static propTypes = {\n specPath: ImPropTypes.list.isRequired,\n operation: PropTypes.instanceOf(Iterable).isRequired,\n summary: PropTypes.string,\n response: PropTypes.instanceOf(Iterable),\n request: PropTypes.instanceOf(Iterable),\n\n toggleShown: PropTypes.func.isRequired,\n onTryoutClick: PropTypes.func.isRequired,\n onResetClick: PropTypes.func.isRequired,\n onCancelClick: PropTypes.func.isRequired,\n onExecute: PropTypes.func.isRequired,\n\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n authActions: PropTypes.object,\n authSelectors: PropTypes.object,\n specActions: PropTypes.object.isRequired,\n specSelectors: PropTypes.object.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n oas3Selectors: PropTypes.object.isRequired,\n layoutActions: PropTypes.object.isRequired,\n layoutSelectors: PropTypes.object.isRequired,\n fn: PropTypes.object.isRequired\n }\n\n static defaultProps = {\n operation: null,\n response: null,\n request: null,\n specPath: List(),\n summary: \"\"\n }\n\n render() {\n let {\n specPath,\n response,\n request,\n toggleShown,\n onTryoutClick,\n onResetClick,\n onCancelClick,\n onExecute,\n fn,\n getComponent,\n getConfigs,\n specActions,\n specSelectors,\n authActions,\n authSelectors,\n oas3Actions,\n oas3Selectors\n } = this.props\n let operationProps = this.props.operation\n\n let {\n deprecated,\n isShown,\n path,\n method,\n op,\n tag,\n operationId,\n allowTryItOut,\n displayRequestDuration,\n tryItOutEnabled,\n executeInProgress\n } = operationProps.toObject()\n\n const description = op.get(\"description\")\n const externalDocs = op.get(\"externalDocs\")?.toJS()\n const schemes = op.get(\"schemes\")?.toJS()\n\n const externalDocsUrl = externalDocs ? safeBuildUrl(externalDocs.url, specSelectors.url(), { selectedServer: oas3Selectors.selectedServer() }) : \"\"\n let operation = operationProps.getIn([\"op\"])\n let responses = operation.get(\"responses\")\n let parameters = getList(operation, [\"parameters\"])\n let operationScheme = specSelectors.operationScheme(path, method)\n const normalizedMethod = String(method).toLowerCase()\n const methodClassName = OPERATION_METHODS.includes(normalizedMethod)\n ? normalizedMethod\n : \"custom\"\n let isShownKey = [\"operations\", tag, operationId]\n let extensions = getExtensions(operation)\n\n const Responses = getComponent(\"responses\", true)\n const Parameters = getComponent( \"parameters\", true )\n const Execute = getComponent( \"execute\" )\n const Clear = getComponent( \"clear\" )\n const Collapse = getComponent( \"Collapse\" )\n const Markdown = getComponent(\"Markdown\", true)\n const Schemes = getComponent( \"schemes\" )\n const OperationServers = getComponent( \"OperationServers\" )\n const OperationExt = getComponent( \"OperationExt\" )\n const OperationSummary = getComponent( \"OperationSummary\" )\n const Link = getComponent( \"Link\" )\n\n const { showExtensions } = getConfigs()\n\n // Merge in Live Response\n if(responses && response && response.size > 0) {\n let notDocumented = !responses.get(String(response.get(\"status\"))) && !responses.get(\"default\")\n response = response.set(\"notDocumented\", notDocumented)\n }\n\n let onChangeKey = [ path, method ] // Used to add values to _this_ operation ( indexed by path and method )\n\n const validationErrors = specSelectors.validationErrors([path, method])\n\n return (\n
    \n \n \n
    \n { (operation && operation.size) || operation === null ? null :\n \n }\n { deprecated &&

    Warning: Deprecated

    }\n { description &&\n
    \n
    \n \n
    \n
    \n }\n {\n externalDocsUrl ?\n
    \n

    Find more details

    \n
    \n {externalDocs.description &&\n \n \n \n }\n {externalDocsUrl}\n
    \n
    : null\n }\n\n { !operation || !operation.size ? null :\n \n }\n\n { !tryItOutEnabled ? null :\n \n }\n\n {!tryItOutEnabled || !allowTryItOut ? null : schemes && schemes.size ?
    \n \n
    : null\n }\n\n { !tryItOutEnabled || !allowTryItOut || validationErrors.length <= 0 ? null :
    \n Please correct the following validation errors and try again.\n
      \n { validationErrors.map((error, index) =>
    • { error }
    • ) }\n
    \n
    \n }\n\n
    \n { !tryItOutEnabled || !allowTryItOut ? null :\n\n \n }\n\n { (!tryItOutEnabled || !response || !allowTryItOut) ? null :\n \n }\n
    \n\n {executeInProgress ?
    : null}\n\n { !responses ? null :\n \n }\n\n { !showExtensions || !extensions.size ? null :\n \n }\n
    \n
    \n
    \n )\n }\n\n}\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { opId } from \"swagger-client/es/helpers\"\nimport { Iterable, fromJS, Map } from \"immutable\"\n\nexport default class OperationContainer extends PureComponent {\n constructor(props, context) {\n super(props, context)\n\n this.state = {\n executeInProgress: false\n }\n }\n\n static propTypes = {\n op: PropTypes.instanceOf(Iterable).isRequired,\n tag: PropTypes.string.isRequired,\n path: PropTypes.string.isRequired,\n method: PropTypes.string.isRequired,\n operationId: PropTypes.string.isRequired,\n showSummary: PropTypes.bool.isRequired,\n isShown: PropTypes.bool.isRequired,\n jumpToKey: PropTypes.string.isRequired,\n allowTryItOut: PropTypes.bool,\n tryItOutEnabled: PropTypes.bool,\n displayOperationId: PropTypes.bool,\n isAuthorized: PropTypes.bool,\n displayRequestDuration: PropTypes.bool,\n response: PropTypes.instanceOf(Iterable),\n request: PropTypes.instanceOf(Iterable),\n security: PropTypes.instanceOf(Iterable),\n isDeepLinkingEnabled: PropTypes.bool.isRequired,\n specPath: ImPropTypes.list.isRequired,\n getComponent: PropTypes.func.isRequired,\n authActions: PropTypes.object,\n oas3Actions: PropTypes.object,\n oas3Selectors: PropTypes.object,\n authSelectors: PropTypes.object,\n specActions: PropTypes.object.isRequired,\n specSelectors: PropTypes.object.isRequired,\n layoutActions: PropTypes.object.isRequired,\n layoutSelectors: PropTypes.object.isRequired,\n fn: PropTypes.object.isRequired,\n getConfigs: PropTypes.func.isRequired\n }\n\n static defaultProps = {\n showSummary: true,\n response: null,\n allowTryItOut: true,\n displayOperationId: false,\n displayRequestDuration: false\n }\n\n mapStateToProps(nextState, props) {\n const { op, layoutSelectors, getConfigs } = props\n const { docExpansion, deepLinking, displayOperationId, displayRequestDuration, supportedSubmitMethods, tryItOutEnabled: configTryItOutEnabled } = getConfigs()\n const showSummary = layoutSelectors.showSummary()\n const operationId = op.getIn([\"operation\", \"__originalOperationId\"]) || op.getIn([\"operation\", \"operationId\"]) || opId(op.get(\"operation\"), props.path, props.method) || op.get(\"id\")\n const isShownKey = [\"operations\", props.tag, operationId]\n const allowTryItOut = supportedSubmitMethods.indexOf(props.method) >= 0 && (typeof props.allowTryItOut === \"undefined\" ?\n props.specSelectors.allowTryItOutFor(props.path, props.method) : props.allowTryItOut)\n const security = op.getIn([\"operation\", \"security\"]) || props.specSelectors.security()\n\n return {\n operationId,\n isDeepLinkingEnabled: deepLinking,\n showSummary,\n displayOperationId,\n displayRequestDuration,\n allowTryItOut,\n security,\n isAuthorized: props.authSelectors.isAuthorized(security),\n isShown: layoutSelectors.isShown(isShownKey, docExpansion === \"full\" ),\n tryItOutEnabled: layoutSelectors.isShown([...isShownKey, \"try-it-out\"], configTryItOutEnabled),\n jumpToKey: `paths.${props.path}.${props.method}`,\n response: props.specSelectors.responseFor(props.path, props.method),\n request: props.specSelectors.requestFor(props.path, props.method)\n }\n }\n\n componentDidMount() {\n const { isShown } = this.props\n const resolvedSubtree = this.getResolvedSubtree()\n\n if(isShown && resolvedSubtree === undefined) {\n this.requestResolvedSubtree()\n }\n }\n\n componentDidUpdate(prevProps) {\n const { response, isShown } = this.props\n const resolvedSubtree = this.getResolvedSubtree()\n\n if (response !== prevProps.response) {\n this.setState({ executeInProgress: false })\n }\n\n if (isShown && resolvedSubtree === undefined) {\n this.requestResolvedSubtree()\n }\n }\n\n toggleShown =() => {\n let { layoutActions, tag, operationId, isShown } = this.props\n const resolvedSubtree = this.getResolvedSubtree()\n if(!isShown && resolvedSubtree === undefined) {\n // transitioning from collapsed to expanded\n this.requestResolvedSubtree()\n }\n layoutActions.show([\"operations\", tag, operationId], !isShown)\n }\n\n onCancelClick=() => {\n const { layoutActions, tag, operationId } = this.props\n layoutActions.show([\"operations\", tag, operationId, \"try-it-out\"], false)\n }\n\n onTryoutClick =() => {\n const { layoutActions, tag, operationId } = this.props\n layoutActions.show([\"operations\", tag, operationId, \"try-it-out\"], true)\n }\n\n onResetClick = (pathMethod) => {\n const defaultRequestBodyValue = this.props.oas3Selectors.selectDefaultRequestBodyValue(...pathMethod)\n const contentType = this.props.oas3Selectors.requestContentType(...pathMethod)\n\n if (contentType === \"application/x-www-form-urlencoded\" || contentType === \"multipart/form-data\") {\n const jsonRequestBodyValue = JSON.parse(defaultRequestBodyValue)\n Object.entries(jsonRequestBodyValue).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n jsonRequestBodyValue[key] = jsonRequestBodyValue[key].map((val) => {\n if (typeof val === \"object\") {\n return JSON.stringify(val, null, 2)\n }\n return val\n })\n } else if (typeof value === \"object\") {\n jsonRequestBodyValue[key] = JSON.stringify(jsonRequestBodyValue[key], null, 2)\n }\n })\n this.props.oas3Actions.setRequestBodyValue({ value: fromJS(jsonRequestBodyValue), pathMethod })\n } else {\n this.props.oas3Actions.setRequestBodyValue({ value: defaultRequestBodyValue, pathMethod })\n }\n }\n\n onExecute = () => {\n this.setState({ executeInProgress: true })\n }\n\n getResolvedSubtree = () => {\n const {\n specSelectors,\n path,\n method,\n specPath\n } = this.props\n\n if(specPath) {\n return specSelectors.specResolvedSubtree(specPath.toJS())\n }\n\n return specSelectors.specResolvedSubtree([\"paths\", path, method])\n }\n\n requestResolvedSubtree = () => {\n const {\n specActions,\n path,\n method,\n specPath\n } = this.props\n\n\n if(specPath) {\n return specActions.requestResolvedSubtree(specPath.toJS())\n }\n\n return specActions.requestResolvedSubtree([\"paths\", path, method])\n }\n\n render() {\n let {\n op: unresolvedOp,\n tag,\n path,\n method,\n security,\n isAuthorized,\n operationId,\n showSummary,\n isShown,\n jumpToKey,\n allowTryItOut,\n response,\n request,\n displayOperationId,\n displayRequestDuration,\n isDeepLinkingEnabled,\n specPath,\n specSelectors,\n specActions,\n getComponent,\n getConfigs,\n layoutSelectors,\n layoutActions,\n authActions,\n authSelectors,\n oas3Actions,\n oas3Selectors,\n fn\n } = this.props\n\n const Operation = getComponent( \"operation\" )\n\n const resolvedSubtree = this.getResolvedSubtree() || Map()\n\n const operationProps = fromJS({\n op: resolvedSubtree,\n tag,\n path,\n summary: unresolvedOp.getIn([\"operation\", \"summary\"]) || \"\",\n deprecated: resolvedSubtree.get(\"deprecated\") || unresolvedOp.getIn([\"operation\", \"deprecated\"]) || false,\n method,\n security,\n isAuthorized,\n operationId,\n originalOperationId: resolvedSubtree.getIn([\"operation\", \"__originalOperationId\"]),\n showSummary,\n isShown,\n jumpToKey,\n allowTryItOut,\n request,\n displayOperationId,\n displayRequestDuration,\n isDeepLinkingEnabled,\n executeInProgress: this.state.executeInProgress,\n tryItOutEnabled: this.props.tryItOutEnabled\n })\n\n return (\n \n )\n }\n\n}\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Iterable, List } from \"immutable\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport toString from \"lodash/toString\"\n\n\nexport default class OperationSummary extends PureComponent {\n\n static propTypes = {\n specPath: ImPropTypes.list.isRequired,\n operationProps: PropTypes.instanceOf(Iterable).isRequired,\n isShown: PropTypes.bool.isRequired,\n toggleShown: PropTypes.func.isRequired,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n authActions: PropTypes.object,\n authSelectors: PropTypes.object,\n }\n\n static defaultProps = {\n operationProps: null,\n specPath: List(),\n summary: \"\"\n }\n\n render() {\n\n let {\n isShown,\n toggleShown,\n getComponent,\n authActions,\n authSelectors,\n operationProps,\n specPath,\n } = this.props\n\n let {\n summary,\n isAuthorized,\n method,\n op,\n showSummary,\n path,\n operationId,\n originalOperationId,\n displayOperationId,\n } = operationProps.toObject()\n\n const resolvedSummary = op.get(\"summary\")\n const security = operationProps.get(\"security\")\n\n const AuthorizeOperationBtn = getComponent(\"authorizeOperationBtn\", true)\n const OperationSummaryMethod = getComponent(\"OperationSummaryMethod\")\n const OperationSummaryPath = getComponent(\"OperationSummaryPath\")\n const JumpToPath = getComponent(\"JumpToPath\", true)\n const CopyToClipboardBtn = getComponent(\"CopyToClipboardBtn\", true)\n const ArrowUpIcon = getComponent(\"ArrowUpIcon\")\n const ArrowDownIcon = getComponent(\"ArrowDownIcon\")\n\n const hasSecurity = security && !!security.count()\n const securityIsOptional = hasSecurity && security.size === 1 && security.first().isEmpty()\n const allowAnonymous = !hasSecurity || securityIsOptional\n return (\n
    \n \n \n
    \n \n\n {!showSummary ? null :\n
    \n {toString(resolvedSummary || summary)}\n
    \n }\n
    \n\n {displayOperationId && (originalOperationId || operationId) ? {originalOperationId || operationId} : null}\n \n \n {\n allowAnonymous ? null :\n {\n const applicableDefinitions = authSelectors.definitionsForRequirements(security)\n authActions.showDefinitions(applicableDefinitions)\n }}\n />\n }\n {/* TODO: use wrapComponents here, swagger-ui doesn't care about jumpToPath */}\n \n {isShown ? : }\n \n
    \n )\n }\n}\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Iterable } from \"immutable\"\nimport { OPERATION_METHODS } from \"core/utils/operation-methods\"\n\nexport default class OperationSummaryMethod extends PureComponent {\n\n static propTypes = {\n operationProps: PropTypes.instanceOf(Iterable).isRequired,\n method: PropTypes.string.isRequired,\n }\n\n static defaultProps = {\n operationProps: null,\n }\n render() {\n\n let {\n method,\n } = this.props\n\n return (\n {OPERATION_METHODS.includes(method) ? method.toUpperCase() : method}\n )\n }\n}\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Iterable } from \"immutable\"\nimport { createDeepLinkPath } from \"core/utils\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class OperationSummaryPath extends PureComponent{\n\n static propTypes = {\n specPath: ImPropTypes.list.isRequired,\n operationProps: PropTypes.instanceOf(Iterable).isRequired,\n getComponent: PropTypes.func.isRequired,\n }\n\n render(){\n let {\n getComponent,\n operationProps,\n } = this.props\n\n\n let {\n deprecated,\n isShown,\n path,\n tag,\n operationId,\n isDeepLinkingEnabled,\n } = operationProps.toObject()\n\n /**\n * Add word-break elements between each segment, before the slash\n * to allow browsers an opportunity to break long paths into sensible segments.\n */\n const pathParts = path.split(/(?=\\/)/g)\n for (let i = 1; i < pathParts.length; i += 2) {\n pathParts.splice(i, 0, )\n }\n\n const DeepLink = getComponent( \"DeepLink\" )\n\n return(\n \n \n \n\n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport const OperationExt = ({ extensions, getComponent }) => {\n let OperationExtRow = getComponent(\"OperationExtRow\")\n return (\n
    \n
    \n

    Extensions

    \n
    \n
    \n\n \n \n \n \n \n \n \n \n {\n extensions.entrySeq().map(([k, v]) => )\n }\n \n
    FieldValue
    \n
    \n
    \n )\n}\nOperationExt.propTypes = {\n extensions: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired\n}\n\nexport default OperationExt\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport const OperationExtRow = ({ xKey, xVal }) => {\n const xNormalizedValue = !xVal ? null : xVal.toJS ? xVal.toJS() : xVal\n\n return (\n { xKey }\n { JSON.stringify(xNormalizedValue) }\n )\n}\nOperationExtRow.propTypes = {\n xKey: PropTypes.string,\n xVal: PropTypes.any\n}\n\nexport default OperationExtRow\n","/**\n * Replace invalid characters from a string to create an html-ready ID\n *\n * @param {string} id A string that may contain invalid characters for the HTML ID attribute\n * @param {string} [replacement=_] The string to replace invalid characters with; \"_\" by default\n * @return {string} Information about the parameter schema\n */\nexport default function createHtmlReadyId(id, replacement = \"_\") {\n return id.replace(/[^\\w-]/g, replacement)\n}\n","import React from \"react\"\nimport { fromJS, Iterable } from \"immutable\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { defaultStatusCode, getAcceptControllingResponse, isExtension } from \"core/utils\"\nimport createHtmlReadyId from \"core/utils/create-html-ready-id\"\n\nexport default class Responses extends React.Component {\n static propTypes = {\n tryItOutResponse: PropTypes.instanceOf(Iterable),\n responses: PropTypes.instanceOf(Iterable).isRequired,\n produces: PropTypes.instanceOf(Iterable),\n producesValue: PropTypes.any,\n displayRequestDuration: PropTypes.bool.isRequired,\n path: PropTypes.string.isRequired,\n method: PropTypes.string.isRequired,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired,\n specActions: PropTypes.object.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n oas3Selectors: PropTypes.object.isRequired,\n specPath: ImPropTypes.list.isRequired,\n fn: PropTypes.object.isRequired\n }\n\n static defaultProps = {\n tryItOutResponse: null,\n produces: fromJS([\"application/json\"]),\n displayRequestDuration: false\n }\n\n // These performance-enhancing checks were disabled as part of Multiple Examples\n // because they were causing data-consistency issues\n //\n // shouldComponentUpdate(nextProps) {\n // // BUG: props.tryItOutResponse is always coming back as a new Immutable instance\n // let render = this.props.tryItOutResponse !== nextProps.tryItOutResponse\n // || this.props.responses !== nextProps.responses\n // || this.props.produces !== nextProps.produces\n // || this.props.producesValue !== nextProps.producesValue\n // || this.props.displayRequestDuration !== nextProps.displayRequestDuration\n // || this.props.path !== nextProps.path\n // || this.props.method !== nextProps.method\n // return render\n // }\n\n\tonChangeProducesWrapper = ( val ) => this.props.specActions.changeProducesValue([this.props.path, this.props.method], val)\n\n onResponseContentTypeChange = ({ controlsAcceptHeader, value }) => {\n const { oas3Actions, path, method } = this.props\n if(controlsAcceptHeader) {\n oas3Actions.setResponseContentType({\n value,\n path,\n method\n })\n }\n }\n\n render() {\n let {\n responses,\n tryItOutResponse,\n getComponent,\n getConfigs,\n specSelectors,\n fn,\n producesValue,\n displayRequestDuration,\n specPath,\n path,\n method,\n oas3Selectors,\n oas3Actions,\n } = this.props\n let defaultCode = defaultStatusCode( responses )\n\n const ContentType = getComponent( \"contentType\" )\n const LiveResponse = getComponent( \"liveResponse\" )\n const Response = getComponent( \"response\" )\n\n let produces = this.props.produces && this.props.produces.size ? this.props.produces : Responses.defaultProps.produces\n\n const isSpecOAS3 = specSelectors.isOAS3()\n\n const acceptControllingResponse = isSpecOAS3 ?\n getAcceptControllingResponse(responses) : null\n\n const nonExtensionResponses = responses.filter((_, key) => !isExtension(key))\n const regionId = createHtmlReadyId(`${method}${path}_responses`)\n const controlId = `${regionId}_select`\n\n return (!nonExtensionResponses || !nonExtensionResponses.size) ? null : (\n
    \n
    \n

    Responses

    \n { specSelectors.isOAS3() ? null : }\n
    \n
    \n {\n !tryItOutResponse ? null\n :
    \n \n

    Responses

    \n
    \n\n }\n\n \n \n \n \n \n { specSelectors.isOAS3() ? : null }\n \n \n \n {\n nonExtensionResponses.entrySeq().map( ([code, response]) => {\n\n let className = tryItOutResponse && tryItOutResponse.get(\"status\") == code ? \"response_current\" : \"\"\n return (\n \n )\n }).toArray()\n }\n \n
    CodeDescriptionLinks
    \n
    \n
    \n )\n }\n}\n","export function canJsonParse(str) {\n try {\n let testValueForJson = JSON.parse(str)\n return testValueForJson ? true : false\n } catch (e) {\n // exception: string is not valid json\n return null\n }\n}\n\nexport function getKnownSyntaxHighlighterLanguage(val) {\n // to start, only check for json. can expand as needed in future\n const isValidJson = canJsonParse(val)\n return isValidJson ? \"json\" : null\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport cx from \"classnames\"\nimport { fromJS, Iterable, Map } from \"immutable\"\nimport { getExtensions, fromJSOrdered, stringify } from \"core/utils\"\nimport { getKnownSyntaxHighlighterLanguage } from \"core/utils/jsonParse\"\n\n\nconst getExampleComponent = ( sampleResponse, HighlightCode ) => {\n if (sampleResponse == null) return null\n\n const testValueForJson = getKnownSyntaxHighlighterLanguage(sampleResponse)\n const language = testValueForJson ? \"json\" : null\n\n return (\n
    \n {stringify(sampleResponse)}\n
    \n )\n}\n\nexport default class Response extends React.Component {\n constructor(props, context) {\n super(props, context)\n\n this.state = {\n responseContentType: \"\",\n }\n }\n\n static propTypes = {\n path: PropTypes.string.isRequired,\n method: PropTypes.string.isRequired,\n code: PropTypes.string.isRequired,\n response: PropTypes.instanceOf(Iterable),\n className: PropTypes.string,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n oas3Selectors: PropTypes.object,\n specPath: ImPropTypes.list.isRequired,\n fn: PropTypes.object.isRequired,\n contentType: PropTypes.string,\n activeExamplesKey: PropTypes.string,\n controlsAcceptHeader: PropTypes.bool,\n onContentTypeChange: PropTypes.func\n }\n\n static defaultProps = {\n response: fromJS({}),\n onContentTypeChange: () => {}\n }\n\n _onContentTypeChange = (value) => {\n const { onContentTypeChange, controlsAcceptHeader, specSelectors, path, method, code, oas3Actions } = this.props\n\n if (specSelectors.isOAS3()) {\n oas3Actions.setResponseCodeContentType({ value, path, method, code })\n } else {\n this.setState({ responseContentType: value })\n }\n\n onContentTypeChange({\n value: value,\n controlsAcceptHeader\n })\n }\n\n getActiveContentType = () => {\n const { specSelectors, path, method, code, contentType, oas3Selectors } = this.props\n\n if (specSelectors.isOAS3()) {\n return oas3Selectors?.responseCodeContentType(path, method, code) || contentType || \"\"\n }\n\n return this.state.responseContentType || contentType\n }\n\n getActiveMediaType = () => {\n const { response } = this.props\n const mediaType = response.getIn([\"content\", this.getActiveContentType()])\n \n return Map.isMap(mediaType) ? mediaType : Map({})\n }\n\n getTargetExamplesKey = () => {\n const { activeExamplesKey } = this.props\n\n const examplesForMediaType = this.getActiveMediaType().get(\"examples\", null)\n\n const firstExamplesKey = Map.isMap(examplesForMediaType)\n ? examplesForMediaType.keySeq().first()\n : undefined\n return activeExamplesKey || firstExamplesKey\n }\n\n render() {\n let {\n path,\n method,\n code,\n response,\n className,\n specPath,\n fn,\n getComponent,\n getConfigs,\n specSelectors,\n controlsAcceptHeader,\n oas3Actions,\n } = this.props\n\n let { inferSchema, getSampleSchema } = fn\n let isOAS3 = specSelectors.isOAS3()\n const { showExtensions } = getConfigs()\n\n let extensions = showExtensions ? getExtensions(response) : null\n let headers = response.get(\"headers\")\n let links = response.get(\"links\")\n const ResponseExtension = getComponent(\"ResponseExtension\")\n const Headers = getComponent(\"headers\")\n const HighlightCode = getComponent(\"HighlightCode\", true)\n const ModelExample = getComponent(\"modelExample\", true)\n const Markdown = getComponent(\"Markdown\", true)\n const OperationLink = getComponent(\"operationLink\")\n const ContentType = getComponent(\"contentType\")\n const ExamplesSelect = getComponent(\"ExamplesSelect\")\n const Example = getComponent(\"Example\")\n\n\n var schema, specPathWithPossibleSchema\n\n const activeContentType = this.getActiveContentType()\n const activeMediaType = this.getActiveMediaType()\n const examplesForMediaType = activeMediaType.get(\"examples\", null)\n\n // Goal: find a schema value for `schema`\n if(isOAS3) {\n const oas3SchemaForContentType = activeMediaType.get(\"schema\")\n const hasSchemaForContentType = Map.isMap(oas3SchemaForContentType)\n\n schema = hasSchemaForContentType ? inferSchema(oas3SchemaForContentType.toJS()) : null\n specPathWithPossibleSchema = hasSchemaForContentType\n ? specPath.push(\"content\", activeContentType, \"schema\")\n : specPath\n } else {\n schema = response.get(\"schema\")\n specPathWithPossibleSchema = response.has(\"schema\") ? specPath.push(\"schema\") : specPath\n }\n\n let mediaTypeExample\n let shouldOverrideSchemaExample = false\n let sampleSchema\n let sampleGenConfig = {\n includeReadOnly: true\n }\n\n // Goal: find an example value for `sampleResponse`\n if(isOAS3) {\n const activeMediaTypeSchema = activeMediaType.get(\"schema\")\n sampleSchema = Map.isMap(activeMediaTypeSchema) ? activeMediaTypeSchema.toJS() : undefined\n if(Map.isMap(examplesForMediaType) && !examplesForMediaType.isEmpty()) {\n const targetExamplesKey = this.getTargetExamplesKey()\n const targetExample = examplesForMediaType\n .get(targetExamplesKey, Map({}))\n const getMediaTypeExample = (targetExample) =>\n Map.isMap(targetExample)\n ? targetExample.get(\"value\")\n : undefined\n mediaTypeExample = getMediaTypeExample(targetExample)\n if(mediaTypeExample === undefined) {\n mediaTypeExample = getMediaTypeExample(examplesForMediaType.values().next().value)\n }\n shouldOverrideSchemaExample = true\n } else if(activeMediaType.get(\"example\") !== undefined) {\n // use the example key's value\n mediaTypeExample = activeMediaType.get(\"example\")\n shouldOverrideSchemaExample = true\n }\n } else {\n sampleSchema = schema\n sampleGenConfig = {...sampleGenConfig, includeWriteOnly: true}\n const oldOASMediaTypeExample = response.getIn([\"examples\", activeContentType])\n if(oldOASMediaTypeExample) {\n mediaTypeExample = oldOASMediaTypeExample\n shouldOverrideSchemaExample = true\n }\n }\n\n const sampleResponse = getSampleSchema(\n sampleSchema,\n activeContentType,\n sampleGenConfig,\n shouldOverrideSchemaExample ? mediaTypeExample : undefined\n )\n\n const example = getExampleComponent( sampleResponse, HighlightCode )\n\n return (\n \n \n { code }\n \n \n\n
    \n \n
    \n\n { !showExtensions || !extensions.size ? null : extensions.entrySeq().map(([key, v]) => )}\n\n {isOAS3 && Map.isMap(response.get(\"content\")) ? (\n
    \n \n \n Media type\n \n \n {controlsAcceptHeader ? (\n \n Controls Accept header.\n \n ) : null}\n \n {Map.isMap(examplesForMediaType) && !examplesForMediaType.isEmpty() ? (\n
    \n \n Examples\n \n {\n if (isSyntheticChange) return\n\n oas3Actions.setActiveExamplesMember({\n name: key,\n pathMethod: [path, method],\n contextType: \"responses\",\n contextName: code\n })\n }}\n showLabels={false}\n />\n
    \n ) : null}\n
    \n ) : null}\n\n { example || schema ? (\n \n ) : null }\n\n { isOAS3 && Map.isMap(examplesForMediaType) ? (\n \n ) : null}\n\n { headers ? (\n \n ) : null}\n\n \n {isOAS3 ? \n { Map.isMap(links) ?\n links.toSeq().entrySeq().map(([key, link]) => {\n return \n })\n : No links}\n : null}\n \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport const ResponseExtension = ({ xKey, xVal }) => {\n return
    { xKey }: { String(xVal) }
    \n}\nResponseExtension.propTypes = {\n xKey: PropTypes.string,\n xVal: PropTypes.any\n}\n\nexport default ResponseExtension\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport formatXml from \"xml-but-prettier\"\nimport toLower from \"lodash/toLower\"\nimport { extractFileNameFromContentDispositionHeader } from \"core/utils\"\nimport { getKnownSyntaxHighlighterLanguage } from \"core/utils/jsonParse\"\nimport win from \"core/window\"\n\nexport default class ResponseBody extends React.PureComponent {\n state = {\n parsedContent: null\n }\n\n static propTypes = {\n content: PropTypes.any.isRequired,\n contentType: PropTypes.string,\n getComponent: PropTypes.func.isRequired,\n headers: PropTypes.object,\n url: PropTypes.string\n }\n\n updateParsedContent = (prevContent) => {\n const { content } = this.props\n\n if(prevContent === content) {\n return\n }\n\n if(content && content instanceof Blob) {\n var reader = new FileReader()\n reader.onload = () => {\n this.setState({\n parsedContent: reader.result\n })\n }\n reader.readAsText(content)\n } else {\n this.setState({\n parsedContent: content.toString()\n })\n }\n }\n\n componentDidMount() {\n this.updateParsedContent(null)\n }\n\n componentDidUpdate(prevProps) {\n this.updateParsedContent(prevProps.content)\n }\n\n render() {\n let { content, contentType, url, headers={}, getComponent } = this.props\n const { parsedContent } = this.state\n const HighlightCode = getComponent(\"HighlightCode\", true)\n const downloadName = \"response_\" + new Date().getTime()\n let body, bodyEl\n url = url || \"\"\n\n if (\n (/^application\\/octet-stream/i.test(contentType) ||\n (headers[\"Content-Disposition\"] && /attachment/i.test(headers[\"Content-Disposition\"])) ||\n (headers[\"content-disposition\"] && /attachment/i.test(headers[\"content-disposition\"])) ||\n (headers[\"Content-Description\"] && /File Transfer/i.test(headers[\"Content-Description\"])) ||\n (headers[\"content-description\"] && /File Transfer/i.test(headers[\"content-description\"]))) &&\n (content.size > 0 || content.length > 0)\n ) {\n // Download\n\n if (\"Blob\" in window) {\n let type = contentType || \"text/html\"\n let blob = (content instanceof Blob) ? content : new Blob([content], {type: type})\n let href = window.URL.createObjectURL(blob)\n let fileName = url.substr(url.lastIndexOf(\"/\") + 1)\n let download = [type, fileName, href].join(\":\")\n\n // Use filename from response header,\n // First check if filename is quoted (e.g. contains space), if no, fallback to not quoted check\n let disposition = headers[\"content-disposition\"] || headers[\"Content-Disposition\"]\n if (typeof disposition !== \"undefined\") {\n let responseFilename = extractFileNameFromContentDispositionHeader(disposition)\n if (responseFilename !== null) {\n download = responseFilename\n }\n }\n\n if(win.navigator && win.navigator.msSaveOrOpenBlob) {\n bodyEl = \n } else {\n bodyEl = \n }\n } else {\n bodyEl =
    Download headers detected but your browser does not support downloading binary via XHR (Blob).
    \n }\n\n // Anything else (CORS)\n } else if (/json/i.test(contentType)) {\n // JSON\n let language = null\n let testValueForJson = getKnownSyntaxHighlighterLanguage(content)\n if (testValueForJson) {\n language = \"json\"\n }\n try {\n body = JSON.stringify(JSON.parse(content), null, \" \")\n } catch (error) {\n body = \"can't parse JSON. Raw result:\\n\\n\" + content\n }\n\n bodyEl = {body}\n\n // XML\n } else if (/xml/i.test(contentType)) {\n body = formatXml(content, {\n textNodesOnSameLine: true,\n indentor: \" \"\n })\n bodyEl = {body}\n\n // HTML or Plain Text\n } else if (toLower(contentType) === \"text/html\" || /text\\/plain/.test(contentType)) {\n bodyEl = {content}\n\n // CSV\n } else if (toLower(contentType) === \"text/csv\" || /text\\/csv/.test(contentType)) {\n bodyEl = {content}\n\n // Image\n } else if (/^image\\//i.test(contentType)) {\n if(contentType.includes(\"svg\")) {\n bodyEl =
    { content }
    \n } else {\n bodyEl = \n }\n\n // Audio\n } else if (/^audio\\//i.test(contentType)) {\n bodyEl =
    \n } else if (typeof content === \"string\") {\n bodyEl = {content}\n } else if ( content.size > 0 ) {\n // We don't know the contentType, but there was some content returned\n if(parsedContent) {\n // We were able to squeeze something out of content\n // in `updateParsedContent`, so let's display it\n bodyEl =
    \n

    \n Unrecognized response type; displaying content as text.\n

    \n {parsedContent}\n
    \n\n } else {\n // Give up\n bodyEl =

    \n Unrecognized response type; unable to display.\n

    \n }\n } else {\n // We don't know the contentType and there was no content returned\n bodyEl = null\n }\n\n return ( !bodyEl ? null :
    \n
    Response body
    \n { bodyEl }\n
    \n )\n }\n}\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Map, List } from \"immutable\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport createHtmlReadyId from \"core/utils/create-html-ready-id\"\n\nexport default class Parameters extends Component {\n\n constructor(props) {\n super(props)\n }\n\n static propTypes = {\n parameters: ImPropTypes.list.isRequired,\n operation: PropTypes.object.isRequired,\n specActions: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n oas3Selectors: PropTypes.object.isRequired,\n layoutActions: PropTypes.object.isRequired,\n layoutSelectors: PropTypes.object.isRequired,\n fn: PropTypes.object.isRequired,\n tryItOutEnabled: PropTypes.bool,\n allowTryItOut: PropTypes.bool,\n onTryoutClick: PropTypes.func,\n onResetClick: PropTypes.func,\n onCancelClick: PropTypes.func,\n onChangeKey: PropTypes.array,\n pathMethod: PropTypes.array.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specPath: ImPropTypes.list.isRequired,\n }\n\n\n static defaultProps = {\n onTryoutClick: Function.prototype,\n onCancelClick: Function.prototype,\n tryItOutEnabled: false,\n allowTryItOut: true,\n onChangeKey: [],\n specPath: [],\n }\n\n onChange = (param, value, isXml) => {\n let {\n specActions: { changeParamByIdentity },\n onChangeKey,\n } = this.props\n\n changeParamByIdentity(onChangeKey, param, value, isXml)\n }\n\n onChangeConsumesWrapper = (val) => {\n let {\n specActions: { changeConsumesValue },\n onChangeKey,\n } = this.props\n\n changeConsumesValue(onChangeKey, val)\n }\n\n toggleTab = (tab) => {\n const { layoutActions, pathMethod } = this.props\n layoutActions.show([...pathMethod, \"callbacks-tab\"], tab === \"callbacks\")\n }\n \n onChangeMediaType = ({ value, pathMethod }) => {\n let { specActions, oas3Selectors, oas3Actions } = this.props\n const userHasEditedBody = oas3Selectors.hasUserEditedBody(...pathMethod)\n const shouldRetainRequestBodyValue = oas3Selectors.shouldRetainRequestBodyValue(...pathMethod)\n oas3Actions.setRequestContentType({ value, pathMethod })\n oas3Actions.initRequestBodyValidateError({ pathMethod })\n if (!userHasEditedBody) {\n if(!shouldRetainRequestBodyValue) {\n oas3Actions.setRequestBodyValue({ value: undefined, pathMethod })\n }\n specActions.clearResponse(...pathMethod)\n specActions.clearRequest(...pathMethod)\n specActions.clearValidateParams(pathMethod)\n }\n }\n\n render() {\n\n let {\n onTryoutClick,\n onResetClick,\n parameters,\n allowTryItOut,\n tryItOutEnabled,\n specPath,\n fn,\n getComponent,\n getConfigs,\n specSelectors,\n specActions,\n pathMethod,\n oas3Actions,\n oas3Selectors,\n layoutSelectors,\n operation,\n } = this.props\n\n const callbackVisible = layoutSelectors.isShown([...pathMethod, \"callbacks-tab\"], false)\n const parametersVisible = !callbackVisible\n\n const ParameterRow = getComponent(\"parameterRow\")\n const TryItOutButton = getComponent(\"TryItOutButton\")\n const ContentType = getComponent(\"contentType\")\n const Callbacks = getComponent(\"Callbacks\", true)\n const RequestBody = getComponent(\"RequestBody\", true)\n\n const isExecute = tryItOutEnabled && allowTryItOut\n const isOAS3 = specSelectors.isOAS3()\n\n const regionId = createHtmlReadyId(`${pathMethod[1]}${pathMethod[0]}_requests`)\n const controlId = `${regionId}_select`\n\n const requestBody = operation.get(\"requestBody\")\n\n const groupedParametersArr = Object.values(parameters\n .reduce((acc, x) => {\n if (Map.isMap(x)) {\n const key = x.get(\"in\")\n acc[key] ??= []\n acc[key].push(x)\n }\n return acc\n }, {}))\n .reduce((acc, x) => acc.concat(x), [])\n\n const retainRequestBodyValueFlagForOperation = (f) => oas3Actions.setRetainRequestBodyValueFlag({ value: f, pathMethod })\n return (\n
    \n
    \n {isOAS3 ? (\n
    \n
    this.toggleTab(\"parameters\")}\n className={`tab-item ${parametersVisible && \"active\"}`}>\n

    Parameters

    \n
    \n {operation.get(\"callbacks\") ?\n (\n
    this.toggleTab(\"callbacks\")}\n className={`tab-item ${callbackVisible && \"active\"}`}>\n

    Callbacks

    \n
    \n ) : null\n }\n
    \n ) : (\n
    \n

    Parameters

    \n
    \n )}\n {allowTryItOut ? (\n onResetClick(pathMethod)}/>\n ) : null}\n
    \n {parametersVisible ?
    \n {!groupedParametersArr.length ?

    No parameters

    :\n
    \n \n \n \n \n \n \n \n \n {\n groupedParametersArr.map((parameter, i) => (\n \n ))\n }\n \n
    NameDescription
    \n
    \n }\n
    : null}\n\n {callbackVisible ?
    \n \n
    : null}\n {\n isOAS3 && requestBody && parametersVisible &&\n
    \n
    \n

    Request\n body

    \n \n
    \n
    \n {\n this.props.oas3Actions.setActiveExamplesMember({\n name: key,\n pathMethod: this.props.pathMethod,\n contextType: \"requestBody\",\n contextName: \"requestBody\", // RBs are currently not stored per-mediaType\n })\n }\n }\n onChange={(value, path) => {\n if (path) {\n const lastValue = oas3Selectors.requestBodyValue(...pathMethod)\n const usableValue = Map.isMap(lastValue) ? lastValue : Map()\n return oas3Actions.setRequestBodyValue({\n pathMethod,\n value: usableValue.setIn(path, value),\n })\n }\n oas3Actions.setRequestBodyValue({ value, pathMethod })\n }}\n onChangeIncludeEmpty={(name, value) => {\n oas3Actions.setRequestBodyInclusion({\n pathMethod,\n value,\n name,\n })\n }}\n contentType={oas3Selectors.requestContentType(...pathMethod)} />\n
    \n
    \n }\n
    \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport const ParameterExt = ({ xKey, xVal }) => {\n return
    { xKey }: { String(xVal) }
    \n}\nParameterExt.propTypes = {\n xKey: PropTypes.string,\n xVal: PropTypes.any\n}\n\nexport default ParameterExt\n","import React, { Component } from \"react\"\nimport cx from \"classnames\"\nimport PropTypes from \"prop-types\"\n\n\nconst noop = () => { }\n\nconst ParameterIncludeEmptyPropTypes = {\n isIncluded: PropTypes.bool.isRequired,\n isDisabled: PropTypes.bool.isRequired,\n isIncludedOptions: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n}\n\nconst ParameterIncludeEmptyDefaultProps = {\n onChange: noop,\n isIncludedOptions: {},\n}\nexport default class ParameterIncludeEmpty extends Component {\n static propTypes = ParameterIncludeEmptyPropTypes\n static defaultProps = ParameterIncludeEmptyDefaultProps\n\n componentDidMount() {\n const { isIncludedOptions, onChange } = this.props\n const { shouldDispatchInit, defaultValue } = isIncludedOptions\n if (shouldDispatchInit) {\n onChange(defaultValue)\n }\n }\n\n onCheckboxChange = e => {\n const { onChange } = this.props\n onChange(e.target.checked)\n }\n\n render() {\n let { isIncluded, isDisabled } = this.props\n\n return (\n
    \n \n
    \n )\n }\n}\n","/**\n * @prettier\n */\n\nimport { List } from \"immutable\"\n\nexport const parseParameterArrayValue = (value) => {\n if (List.isList(value)) {\n return value\n }\n\n if (typeof value !== \"string\") {\n return null\n }\n\n try {\n const parsed = JSON.parse(value)\n\n return Array.isArray(parsed) ? List(parsed) : null\n } catch {\n return null\n }\n}\n","import React, { Component } from \"react\"\nimport { Map, List, fromJS } from \"immutable\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport win from \"core/window\"\nimport { getExtensions, getCommonExtensions, numberToString, stringify, isEmptyValue } from \"core/utils\"\nimport getParameterSchema from \"core/utils/get-parameter-schema.js\"\nimport { parseParameterArrayValue } from \"core/utils/parse-parameter-array-value\"\n\nexport default class ParameterRow extends Component {\n static propTypes = {\n onChange: PropTypes.func.isRequired,\n param: PropTypes.object.isRequired,\n rawParam: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n fn: PropTypes.object.isRequired,\n isExecute: PropTypes.bool,\n onChangeConsumes: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired,\n specActions: PropTypes.object.isRequired,\n pathMethod: PropTypes.array.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specPath: ImPropTypes.list.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n oas3Selectors: PropTypes.object.isRequired,\n }\n\n constructor(props, context) {\n super(props, context)\n\n this.setDefaultValue()\n }\n\n UNSAFE_componentWillReceiveProps(props) {\n let { specSelectors, pathMethod, rawParam } = props\n let isOAS3 = specSelectors.isOAS3()\n\n let parameterWithMeta = specSelectors.parameterWithMetaByIdentity(pathMethod, rawParam) || new Map()\n // fallback, if the meta lookup fails\n parameterWithMeta = parameterWithMeta.isEmpty() ? rawParam : parameterWithMeta\n\n let enumValue\n\n if(isOAS3) {\n let { schema } = getParameterSchema(parameterWithMeta, { isOAS3 })\n enumValue = schema ? schema.get(\"enum\") : undefined\n } else {\n enumValue = parameterWithMeta ? parameterWithMeta.get(\"enum\") : undefined\n }\n let paramValue = parameterWithMeta ? parameterWithMeta.get(\"value\") : undefined\n\n let value\n\n if ( paramValue !== undefined ) {\n value = paramValue\n } else if ( rawParam.get(\"required\") && enumValue && enumValue.size ) {\n value = enumValue.first()\n }\n\n if ( value !== undefined && value !== paramValue ) {\n this.onChangeWrapper(numberToString(value))\n }\n // todo: could check if schema here; if not, do not call. impact?\n this.setDefaultValue()\n }\n\n onChangeWrapper = (value, isXml = false) => {\n let { onChange, rawParam } = this.props\n let valueForUpstream\n\n // Coerce empty strings and empty Immutable objects to null\n if(value === \"\" || (value && value.size === 0)) {\n valueForUpstream = null\n } else {\n valueForUpstream = value\n }\n\n return onChange(rawParam, valueForUpstream, isXml)\n }\n\n _onExampleSelect = (key, /* { isSyntheticChange } = {} */) => {\n this.props.oas3Actions.setActiveExamplesMember({\n name: key,\n pathMethod: this.props.pathMethod,\n contextType: \"parameters\",\n contextName: this.getParamKey()\n })\n }\n\n onChangeIncludeEmpty = (newValue) => {\n let { specActions, param, pathMethod } = this.props\n const paramName = param.get(\"name\")\n const paramIn = param.get(\"in\")\n return specActions.updateEmptyParamInclusion(pathMethod, paramName, paramIn, newValue)\n }\n\n setDefaultValue = () => {\n let { specSelectors, pathMethod, rawParam, oas3Selectors, fn } = this.props\n const isOAS3 = specSelectors.isOAS3()\n\n const paramWithMeta = specSelectors.parameterWithMetaByIdentity(pathMethod, rawParam) || Map()\n let { schema } = getParameterSchema(paramWithMeta, { isOAS3 })\n const parameterMediaType = paramWithMeta\n .get(\"content\", Map())\n .keySeq()\n .first()\n\n // getSampleSchema could return null\n const generatedSampleValue = schema ? fn.getSampleSchema(schema.toJS(), parameterMediaType, {\n\n includeWriteOnly: true\n }) : null\n\n if (!paramWithMeta || paramWithMeta.get(\"value\") !== undefined) {\n return\n }\n\n if( paramWithMeta.get(\"in\") !== \"body\" ) {\n let initialValue\n\n //// Find an initial value\n\n if (specSelectors.isSwagger2()) {\n initialValue =\n paramWithMeta.get(\"x-example\") !== undefined\n ? paramWithMeta.get(\"x-example\")\n : paramWithMeta.getIn([\"schema\", \"example\"]) !== undefined\n ? paramWithMeta.getIn([\"schema\", \"example\"])\n : (schema && schema.getIn([\"default\"]))\n } else if (isOAS3) {\n schema = this.composeJsonSchema(schema)\n\n const currentExampleKey = oas3Selectors.activeExamplesMember(...pathMethod, \"parameters\", this.getParamKey())\n initialValue =\n paramWithMeta.getIn([\"examples\", currentExampleKey, \"value\"]) !== undefined\n ? paramWithMeta.getIn([\"examples\", currentExampleKey, \"value\"])\n : paramWithMeta.getIn([\"content\", parameterMediaType, \"example\"]) !== undefined\n ? paramWithMeta.getIn([\"content\", parameterMediaType, \"example\"])\n : paramWithMeta.get(\"example\") !== undefined\n ? paramWithMeta.get(\"example\")\n : (schema && schema.get(\"example\")) !== undefined\n ? (schema && schema.get(\"example\"))\n : (schema && schema.get(\"default\")) !== undefined\n ? (schema && schema.get(\"default\"))\n : paramWithMeta.get(\"default\") // ensures support for `parameterMacro`\n }\n\n //// Process the initial value\n\n if(initialValue !== undefined && !List.isList(initialValue)) {\n // Stringify if it isn't a List\n initialValue = stringify(initialValue)\n }\n\n //// Dispatch the initial value\n\n const schemaObjectType = fn.getSchemaObjectType(schema)\n const schemaItemsType = fn.getSchemaObjectType(schema?.get(\"items\"))\n const hasMultipleTypes = List.isList(schema?.get(\"type\"))\n\n // Discard invalid array initial values (non-array, non-stringified-array)\n if (isOAS3 && schemaObjectType === \"array\" && !hasMultipleTypes && initialValue !== undefined) {\n const parsedValue = parseParameterArrayValue(initialValue)\n\n this.onChangeWrapper(parsedValue)\n return\n }\n\n if(initialValue !== undefined) {\n this.onChangeWrapper(initialValue)\n } else if(\n schemaObjectType === \"object\"\n && generatedSampleValue\n && !paramWithMeta.get(\"examples\")\n ) {\n // Object parameters get special treatment.. if the user doesn't set any\n // default or example values, we'll provide initial values generated from\n // the schema.\n // However, if `examples` exist for the parameter, we won't do anything,\n // so that the appropriate `examples` logic can take over.\n this.onChangeWrapper(\n List.isList(generatedSampleValue) ? (\n generatedSampleValue\n ) : (\n stringify(generatedSampleValue)\n )\n )\n }\n else if (\n schemaObjectType === \"array\"\n && schemaItemsType === \"object\"\n && generatedSampleValue\n && !paramWithMeta.get(\"examples\")\n ) {\n const parsedValue = parseParameterArrayValue(generatedSampleValue)\n \n this.onChangeWrapper(parsedValue)\n }\n }\n }\n\n\n\n onExampleValueUpdate = (value) => {\n const { specSelectors, pathMethod, rawParam, fn } = this.props\n\n const paramWithMeta = specSelectors.parameterWithMetaByIdentity(pathMethod, rawParam) || Map()\n let { schema } = getParameterSchema(paramWithMeta, { isOAS3: true })\n \n if (schema) {\n schema = this.composeJsonSchema(schema)\n }\n\n const schemaObjectType = fn.getSchemaObjectType(schema)\n const hasMultipleTypes = List.isList(schema?.get(\"type\"))\n\n if (schemaObjectType === \"array\" && !hasMultipleTypes) {\n const parsedValue = parseParameterArrayValue(value)\n\n this.onChangeWrapper(parsedValue)\n } else {\n this.onChangeWrapper(value)\n }\n }\n\n getParamKey() {\n const { param } = this.props\n\n if(!param) return null\n\n return `${param.get(\"name\")}-${param.get(\"in\")}`\n }\n\n composeJsonSchema(schema) {\n const { fn } = this.props\n const oneOf = schema.get(\"oneOf\")?.get(0)?.toJS()\n const anyOf = schema.get(\"anyOf\")?.get(0)?.toJS()\n return fromJS(fn.mergeJsonSchema(schema.toJS(), oneOf ?? anyOf ?? {}))\n }\n\n render() {\n let {param, rawParam, getComponent, getConfigs, isExecute, fn, onChangeConsumes, specSelectors, pathMethod, specPath, oas3Selectors} = this.props\n\n let isOAS3 = specSelectors.isOAS3()\n\n const { showExtensions, showCommonExtensions } = getConfigs()\n\n if(!param) {\n param = rawParam\n }\n\n if(!rawParam) return null\n\n // const onChangeWrapper = (value) => onChange(param, value)\n const JsonSchemaForm = getComponent(\"JsonSchemaForm\")\n const ParamBody = getComponent(\"ParamBody\")\n let inType = param.get(\"in\")\n let bodyParam = inType !== \"body\" ? null\n : \n\n const ModelExample = getComponent(\"modelExample\", true)\n const Markdown = getComponent(\"Markdown\", true)\n const ParameterExt = getComponent(\"ParameterExt\")\n const ParameterIncludeEmpty = getComponent(\"ParameterIncludeEmpty\")\n const ExamplesSelectValueRetainer = getComponent(\"ExamplesSelectValueRetainer\")\n const Example = getComponent(\"Example\")\n\n let { schema } = getParameterSchema(param, { isOAS3 })\n let paramWithMeta = specSelectors.parameterWithMetaByIdentity(pathMethod, rawParam) || Map()\n const parameterMediaType = paramWithMeta\n .get(\"content\", Map())\n .keySeq()\n .first()\n\n if (isOAS3) {\n schema = this.composeJsonSchema(schema)\n }\n\n let format = schema ? schema.get(\"format\") : null\n let isFormData = inType === \"formData\"\n let isFormDataSupported = \"FormData\" in win\n let required = param.get(\"required\")\n\n const schemaObjectType = fn.getSchemaObjectType(schema)\n const schemaItemsType = fn.getSchemaObjectType(schema?.get(\"items\"))\n const schemaObjectTypeLabel = fn.getSchemaObjectTypeLabel(schema)\n const isObject = !bodyParam && schemaObjectType === \"object\"\n const isArrayOfObjects = !bodyParam && schemaItemsType === \"object\"\n\n let value = paramWithMeta ? paramWithMeta.get(\"value\") : \"\"\n let commonExt = showCommonExtensions ? getCommonExtensions(schema) : null\n let extensions = showExtensions ? getExtensions(param) : null\n\n let paramItems // undefined\n let paramEnum // undefined\n let paramDefaultValue // undefined\n let paramExample // undefined\n let isDisplayParamEnum = false\n\n if ( param !== undefined && schema ) {\n paramItems = schema.get(\"items\")\n }\n\n if (paramItems !== undefined) {\n paramEnum = paramItems.get(\"enum\")\n paramDefaultValue = paramItems.get(\"default\")\n } else if (schema) {\n paramEnum = schema.get(\"enum\")\n }\n\n if ( paramEnum && paramEnum.size && paramEnum.size > 0) {\n isDisplayParamEnum = true\n }\n\n // Default and Example Value for readonly doc\n if ( param !== undefined ) {\n if (schema) {\n paramDefaultValue = schema.get(\"default\")\n }\n if (paramDefaultValue === undefined) {\n paramDefaultValue = param.get(\"default\")\n }\n paramExample = param.get(\"example\")\n if (paramExample === undefined) {\n paramExample = param.get(\"x-example\")\n }\n }\n\n const jsonSchemaForm = bodyParam ? null\n : \n\n return (\n \n \n
    \n { param.get(\"name\") }\n { !required ? null :  * }\n
    \n
    \n { schemaObjectTypeLabel }\n { format && (${format})}\n
    \n
    \n { isOAS3 && param.get(\"deprecated\") ? \"deprecated\": null }\n
    \n
    ({ param.get(\"in\") })
    \n \n\n \n { param.get(\"description\") ? : null }\n\n { (bodyParam || !isExecute) && isDisplayParamEnum ?\n Available values : \" + paramEnum.map(function(item) {\n return item\n }).toArray().map(String).join(\", \")}/>\n : null\n }\n\n { (bodyParam || !isExecute) && paramDefaultValue !== undefined ?\n Default value : \" + paramDefaultValue}/>\n : null\n }\n\n { (bodyParam || !isExecute) && paramExample !== undefined ?\n Example : \" + paramExample}/>\n : null\n }\n\n {(isFormData && !isFormDataSupported) &&
    Error: your browser does not support FormData
    }\n\n {\n isOAS3 && param.get(\"examples\") ? (\n
    \n \n
    \n ) : null\n }\n\n { (isObject || isArrayOfObjects) ? (\n \n ) : jsonSchemaForm\n }\n\n {\n bodyParam && schema ? \n : null\n }\n\n {\n !bodyParam && isExecute && param.get(\"allowEmptyValue\") ?\n \n : null\n }\n\n {\n isOAS3 && param.get(\"examples\") ? (\n \n ) : null\n }\n\n { !showCommonExtensions || !commonExt.size ? null : commonExt.entrySeq().map(([key, v]) => )}\n { !showExtensions || !extensions.size ? null : extensions.entrySeq().map(([key, v]) => )}\n\n \n\n \n )\n\n }\n\n}\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class Execute extends Component {\n\n static propTypes = {\n specSelectors: PropTypes.object.isRequired,\n specActions: PropTypes.object.isRequired,\n operation: PropTypes.object.isRequired,\n path: PropTypes.string.isRequired,\n method: PropTypes.string.isRequired,\n oas3Selectors: PropTypes.object.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n onExecute: PropTypes.func,\n disabled: PropTypes.bool\n }\n\n handleValidateParameters = () => {\n let { specSelectors, specActions, path, method } = this.props\n specActions.validateParams([path, method])\n return specSelectors.validateBeforeExecute([path, method])\n }\n\n handleValidateRequestBody = () => {\n let { path, method, specSelectors, oas3Selectors, oas3Actions } = this.props\n let validationErrors = {\n missingBodyValue: false,\n missingRequiredKeys: []\n }\n // context: reset errors, then (re)validate\n oas3Actions.clearRequestBodyValidateError({ path, method })\n let oas3RequiredRequestBodyContentType = specSelectors.getOAS3RequiredRequestBodyContentType([path, method])\n let oas3RequestBodyValue = oas3Selectors.requestBodyValue(path, method)\n let oas3ValidateBeforeExecuteSuccess = oas3Selectors.validateBeforeExecute([path, method])\n let oas3RequestContentType = oas3Selectors.requestContentType(path, method)\n\n if (!oas3ValidateBeforeExecuteSuccess) {\n validationErrors.missingBodyValue = true\n oas3Actions.setRequestBodyValidateError({ path, method, validationErrors })\n return false\n }\n if (!oas3RequiredRequestBodyContentType) {\n return true\n }\n let missingRequiredKeys = oas3Selectors.validateShallowRequired({\n oas3RequiredRequestBodyContentType,\n oas3RequestContentType,\n oas3RequestBodyValue\n })\n if (!missingRequiredKeys || missingRequiredKeys.length < 1) {\n return true\n }\n missingRequiredKeys.forEach((missingKey) => {\n validationErrors.missingRequiredKeys.push(missingKey)\n })\n oas3Actions.setRequestBodyValidateError({ path, method, validationErrors })\n return false\n }\n\n handleValidationResultPass = () => {\n let { specActions, operation, path, method } = this.props\n if (this.props.onExecute) {\n // loading spinner\n this.props.onExecute()\n }\n specActions.execute({ operation, path, method })\n }\n\n handleValidationResultFail = () => {\n let { specActions, path, method } = this.props\n // deferred by 40ms, to give element class change time to settle.\n specActions.clearValidateParams([path, method])\n setTimeout(() => {\n specActions.validateParams([path, method])\n }, 40)\n }\n\n handleValidationResult = (isPass) => {\n if (isPass) {\n this.handleValidationResultPass()\n } else {\n this.handleValidationResultFail()\n }\n }\n\n onClick = () => {\n let paramsResult = this.handleValidateParameters()\n let requestBodyResult = this.handleValidateRequestBody()\n let isPass = paramsResult && requestBodyResult\n this.handleValidationResult(isPass)\n }\n\n onChangeProducesWrapper = ( val ) => this.props.specActions.changeProducesValue([this.props.path, this.props.method], val)\n\n render(){\n const { disabled } = this.props\n return (\n \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Map } from \"immutable\"\n\nconst propClass = \"header-example\"\n\nexport default class Headers extends React.Component {\n static propTypes = {\n headers: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired\n }\n\n render() {\n let { headers, getComponent } = this.props\n\n const Property = getComponent(\"Property\")\n const Markdown = getComponent(\"Markdown\", true)\n\n if ( !headers || !headers.size )\n return null\n\n return (\n
    \n

    Headers:

    \n \n \n \n \n \n \n \n \n \n {\n headers.entrySeq().map( ([ key, header ]) => {\n if(!Map.isMap(header)) {\n return null\n }\n\n const description = header.get(\"description\")\n const type = header.getIn([\"schema\"]) ? header.getIn([\"schema\", \"type\"]) : header.getIn([\"type\"])\n const schemaExample = header.getIn([\"schema\", \"example\"])\n\n return (\n \n \n \n )\n }).toArray()\n }\n \n
    NameDescriptionType
    { key }{\n !description ? null : \n }{ type } { schemaExample ? : null }
    \n
    \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { List } from \"immutable\"\n\nexport default class Errors extends React.Component {\n\n static propTypes = {\n editorActions: PropTypes.object,\n errSelectors: PropTypes.object.isRequired,\n layoutSelectors: PropTypes.object.isRequired,\n layoutActions: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n }\n\n render() {\n let { editorActions, errSelectors, layoutSelectors, layoutActions, getComponent } = this.props\n\n const Collapse = getComponent(\"Collapse\")\n\n if(editorActions && editorActions.jumpToLine) {\n var jumpToLine = editorActions.jumpToLine\n }\n\n let errors = errSelectors.allErrors()\n\n // all thrown errors, plus error-level everything else\n let allErrorsToDisplay = errors.filter(err => err.get(\"type\") === \"thrown\" ? true :err.get(\"level\") === \"error\")\n\n if(!allErrorsToDisplay || allErrorsToDisplay.count() < 1) {\n return null\n }\n\n let isVisible = layoutSelectors.isShown([\"errorPane\"], true)\n let toggleVisibility = () => layoutActions.show([\"errorPane\"], !isVisible)\n\n let sortedJSErrors = allErrorsToDisplay.sortBy(err => err.get(\"line\"))\n\n return (\n
    \n        
    \n

    Errors

    \n \n
    \n \n
    \n { sortedJSErrors.map((err, i) => {\n let type = err.get(\"type\")\n if(type === \"thrown\" || type === \"auth\") {\n return \n }\n if(type === \"spec\") {\n return \n }\n }) }\n
    \n
    \n
    \n )\n }\n}\n\nconst ThrownErrorItem = ( { error, jumpToLine } ) => {\n if(!error) {\n return null\n }\n let errorLine = error.get(\"line\")\n\n return (\n
    \n { !error ? null :\n
    \n

    { (error.get(\"source\") && error.get(\"level\")) ?\n toTitleCase(error.get(\"source\")) + \" \" + error.get(\"level\") : \"\" }\n { error.get(\"path\") ? at {error.get(\"path\")}: null }

    \n \n { error.get(\"message\") }\n \n
    \n { errorLine && jumpToLine ? Jump to line { errorLine } : null }\n
    \n
    \n }\n
    \n )\n }\n\nconst SpecErrorItem = ( { error, jumpToLine = null } ) => {\n let locationMessage = null\n\n if(error.get(\"path\")) {\n if(List.isList(error.get(\"path\"))) {\n locationMessage = at { error.get(\"path\").join(\".\") }\n } else {\n locationMessage = at { error.get(\"path\") }\n }\n } else if(error.get(\"line\") && !jumpToLine) {\n locationMessage = on line { error.get(\"line\") }\n }\n\n return (\n
    \n { !error ? null :\n
    \n

    { toTitleCase(error.get(\"source\")) + \" \" + error.get(\"level\") } { locationMessage }

    \n { error.get(\"message\") }\n
    \n { jumpToLine ? (\n Jump to line { error.get(\"line\") }\n ) : null }\n
    \n
    \n }\n
    \n )\n }\n\nfunction toTitleCase(str) {\n return (str || \"\")\n .split(\" \")\n .map(substr => substr[0].toUpperCase() + substr.slice(1))\n .join(\" \")\n}\n\nThrownErrorItem.propTypes = {\n error: PropTypes.object.isRequired,\n jumpToLine: PropTypes.func\n}\n\nSpecErrorItem.propTypes = {\n error: PropTypes.object.isRequired,\n jumpToLine: PropTypes.func\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { fromJS } from \"immutable\"\n\nconst noop = ()=>{}\n\nexport default class ContentType extends React.Component {\n static propTypes = {\n ariaControls: PropTypes.string,\n contentTypes: PropTypes.oneOfType([ImPropTypes.list, ImPropTypes.set, ImPropTypes.seq]),\n controlId: PropTypes.string,\n value: PropTypes.string,\n onChange: PropTypes.func,\n className: PropTypes.string,\n ariaLabel: PropTypes.string\n }\n\n static defaultProps = {\n onChange: noop,\n value: null,\n contentTypes: fromJS([\"application/json\"]),\n }\n\n componentDidMount() {\n // Populate the form initially, but only if there is no valid value already set\n const { contentTypes, value, onChange } = this.props\n if (contentTypes && contentTypes.size && !contentTypes.includes(value)) {\n onChange(contentTypes.first())\n }\n }\n\n componentDidUpdate() {\n const { contentTypes, value, onChange } = this.props\n\n if (!contentTypes || !contentTypes.size) {\n return\n }\n\n if (!contentTypes.includes(value)) {\n onChange(contentTypes.first())\n }\n }\n\n onChangeWrapper = e => this.props.onChange(e.target.value)\n\n render() {\n let { ariaControls, ariaLabel, className, contentTypes, controlId, value } = this.props\n\n if ( !contentTypes || !contentTypes.size )\n return null\n\n return (\n
    \n \n
    \n )\n }\n \n}","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nfunction xclass(...args) {\n return args.filter(a => !!a).join(\" \").trim()\n}\n\nexport class Container extends React.Component {\n render() {\n let { fullscreen, full, ...rest } = this.props\n // Normal element\n\n if(fullscreen)\n return
    \n\n let containerClass = \"swagger-container\" + (full ? \"-full\" : \"\")\n return (\n
    \n )\n }\n}\n\nContainer.propTypes = {\n fullscreen: PropTypes.bool,\n full: PropTypes.bool,\n className: PropTypes.string\n}\n\nconst DEVICES = {\n \"mobile\": \"\",\n \"tablet\": \"-tablet\",\n \"desktop\": \"-desktop\",\n \"large\": \"-hd\"\n}\n\nexport class Col extends React.Component {\n\n render() {\n const {\n hide,\n keepContents,\n /* we don't want these in the `rest` object that passes to the final component,\n since React now complains. So we extract them */\n /* eslint-disable no-unused-vars */\n mobile,\n tablet,\n desktop,\n large,\n /* eslint-enable no-unused-vars */\n ...rest\n } = this.props\n\n if(hide && !keepContents)\n return \n\n let classesAr = []\n\n for (let device in DEVICES) {\n if (!Object.prototype.hasOwnProperty.call(DEVICES, device)) {\n continue\n }\n let deviceClass = DEVICES[device]\n if(device in this.props) {\n let val = this.props[device]\n\n if(val < 1) {\n classesAr.push(\"none\" + deviceClass)\n continue\n }\n\n classesAr.push(\"block\" + deviceClass)\n classesAr.push(\"col-\" + val + deviceClass)\n }\n }\n\n if (hide) {\n classesAr.push(\"hidden\")\n }\n\n let classes = xclass(rest.className, ...classesAr)\n\n return (\n
    \n )\n }\n\n}\n\nCol.propTypes = {\n hide: PropTypes.bool,\n keepContents: PropTypes.bool,\n mobile: PropTypes.number,\n tablet: PropTypes.number,\n desktop: PropTypes.number,\n large: PropTypes.number,\n className: PropTypes.string\n}\n\nexport class Row extends React.Component {\n\n render() {\n return
    \n }\n\n}\n\nRow.propTypes = {\n className: PropTypes.string\n}\n\nexport class Button extends React.Component {\n\n static propTypes = {\n className: PropTypes.string\n }\n\n static defaultProps = {\n className: \"\"\n }\n\n render() {\n return